利用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();

posted on 2009-08-28 15:56  金宝  阅读(5927)  评论(1编辑  收藏  举报