利用XML生成Excel
先用Excel将我们要生成的表格设计好:
然后另存为XML表格:
将生成的Book1.xml复制到项目中并打开:
找到Table节点,将节点的ss:ExpandedRowCount=”2” 删除掉
往下会看到我们刚输入的标题了吧
<Row>
<Cell ss:StyleID="s23"><Data ss:Type="String">姓名</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">成绩</Data></Cell>
</Row>
下面就是数据
<Row>
<Cell ss:StyleID="s24"><Data ss:Type="String">张三</Data></Cell>
<Cell ss:StyleID="s24"><Data ss:Type="Number">80</Data></Cell>
</Row>
将数据Row剪切并替换成 {0}
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
<Row>
<Cell ss:StyleID="s23"><Data ss:Type="String">姓名</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">成绩</Data></Cell>
</Row>
{0}
</Table>
好了,可以开始写程序了。
DataTable dtData = new DataTable();
dtData的数据为 (姓名,成绩)
//这里就是刚在在XML里剪切掉的Row
string Row = @” <Row>
<Cell ss:StyleID=""s24""><Data ss:Type=""String"">{0}</Data></Cell>
<Cell ss:StyleID=""s24""><Data ss:Type=""Number"">{1}</Data></Cell>
</Row>”;
List<string> Rows = new List<string>();
foreach(DataRow dr in dtData.Rows)
{
Rows.Add(string.Format(Row,dr[“姓名”],dr[“成绩”]));
}
StreamReader reader = new StreamReader(“XML名称.xml”);
StreamWriter writer = new StreamWriter(“新的Excel.xls”)
writer. Write(reader.ReadToEnd(),String.Join(“"r"n”,Row.ToArray()));
writer.Flush();
writer.Close();
reader.Close();