(一). 概要
从读取XML文件数据,生成Excel文件.
(二).运行效果图示例
1. 要转换数据的XML文件
2. 生成的Excel文件显示效果
(三). 代码
1
try
2

{
3
//要转换的XML文件
4
stringXMLFileName=Path.Combine(Request.PhysicalApplicationPath,"book.xml");
5
DataSetdsBook=newDataSet();
6
dsBook.ReadXml(XMLFileName);
7
introws=dsBook.Tables[0].Rows.Count+1;
8
intcols=dsBook.Tables[0].Columns.Count;
9
10
//将要生成的Excel文件
11
stringExcelFileName=Path.Combine(Request.PhysicalApplicationPath,"book.xls");
12
if(File.Exists(ExcelFileName))
13

{
14
File.Delete(ExcelFileName);
15
}
16
StreamWriterwriter=newStreamWriter(ExcelFileName,false);
17
writer.WriteLine("<?xmlversion=\"1.0\"?>");
18
writer.WriteLine("<?mso-applicationprogid=\"Excel.Sheet\"?>");
19
writer.WriteLine("<Workbookxmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
20
writer.WriteLine("xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
21
writer.WriteLine("xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
22
writer.WriteLine("xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
23
writer.WriteLine("xmlns:html=\"http://www.w3.org/TR/REC-html40/\">");
24
writer.WriteLine("<DocumentPropertiesxmlns=\"urn:schemas-microsoft-com:office:office\">");
25
writer.WriteLine("<Author>AutomatedReportGeneratorExample</Author>");
26
writer.WriteLine(string.Format("<Created>{0}T{1}Z</Created>",DateTime.Now.ToString("yyyy-mm-dd"),DateTime.Now.ToString("HH:MM:SS")));
27
writer.WriteLine("<Company>YourCompanyHere</Company>");
28
writer.WriteLine("<Version>11.6408</Version>");
29
writer.WriteLine("</DocumentProperties>");
30
writer.WriteLine("<ExcelWorkbookxmlns=\"urn:schemas-microsoft-com:office:excel\">");
31
writer.WriteLine("<WindowHeight>8955</WindowHeight>");
32
writer.WriteLine("<WindowWidth>11355</WindowWidth>");
33
writer.WriteLine("<WindowTopX>480</WindowTopX>");
34
writer.WriteLine("<WindowTopY>15</WindowTopY>");
35
writer.WriteLine("<ProtectStructure>False</ProtectStructure>");
36
writer.WriteLine("<ProtectWindows>False</ProtectWindows>");
37
writer.WriteLine("</ExcelWorkbook>");
38
writer.WriteLine("<Styles>");
39
writer.WriteLine("<Styless:ID=\"Default\"ss:Name=\"Normal\">");
40
writer.WriteLine("<Alignmentss:Vertical=\"Bottom\"/>");
41
writer.WriteLine("<Borders/>");
42
writer.WriteLine("<Font/>");
43
writer.WriteLine("<Interior/>");
44
writer.WriteLine("<Protection/>");
45
writer.WriteLine("</Style>");
46
writer.WriteLine("<Styless:ID=\"s21\">");
47
writer.WriteLine("<Alignmentss:Vertical=\"Bottom\"ss:WrapText=\"1\"/>");
48
writer.WriteLine("</Style>");
49
writer.WriteLine("</Styles>");
50
writer.WriteLine("<Worksheetss:Name=\"MyReport\">");
51
writer.WriteLine(string.Format("<Tabless:ExpandedColumnCount=\"
{0}\"ss:ExpandedRowCount=\"
{1}\"x:FullColumns=\"1\"",cols.ToString(),rows.ToString()));
52
writer.WriteLine("x:FullRows=\"1\">");
53
54
//生成标题行
55
writer.WriteLine("<Row>");
56
foreach(DataColumneachCloumnindsBook.Tables[0].Columns)
57

{
58
writer.Write("<Cellss:StyleID=\"s21\"><Datass:Type=\"String\">");
59
writer.Write(eachCloumn.ColumnName.ToString());
60
writer.WriteLine("</Data></Cell>");
61
}
62
writer.WriteLine("</Row>");
63
64
//生成数据记录行
65
foreach(DataRoweachRowindsBook.Tables[0].Rows)
66

{
67
writer.WriteLine("<Row>");
68
for(intcurrentRow=0;currentRow!=cols;currentRow++)
69

{
70
writer.Write("<Cellss:StyleID=\"s21\"><Datass:Type=\"String\">");
71
writer.Write(eachRow[currentRow].ToString());
72
writer.WriteLine("</Data></Cell>");
73
}
74
writer.WriteLine("</Row>");
75
}
76
writer.WriteLine("</Table>");
77
writer.WriteLine("<WorksheetOptionsxmlns=\"urn:schemas-microsoft-com:office:excel\">");
78
writer.WriteLine("<Selected/>");
79
writer.WriteLine("<Panes>");
80
writer.WriteLine("<Pane>");
81
writer.WriteLine("<Number>3</Number>");
82
writer.WriteLine("<ActiveRow>1</ActiveRow>");
83
writer.WriteLine("</Pane>");
84
writer.WriteLine("</Panes>");
85
writer.WriteLine("<ProtectObjects>False</ProtectObjects>");
86
writer.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
87
writer.WriteLine("</WorksheetOptions>");
88
writer.WriteLine("</Worksheet>");
89
writer.WriteLine("<Worksheetss:Name=\"Sheet2\">");
90
writer.WriteLine("<WorksheetOptionsxmlns=\"urn:schemas-microsoft-com:office:excel\">");
91
writer.WriteLine("<ProtectObjects>False</ProtectObjects>");
92
writer.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
93
writer.WriteLine("</WorksheetOptions>");
94
writer.WriteLine("</Worksheet>");
95
writer.WriteLine("<Worksheetss:Name=\"Sheet3\">");
96
writer.WriteLine("<WorksheetOptionsxmlns=\"urn:schemas-microsoft-com:office:excel\">");
97
writer.WriteLine("<ProtectObjects>False</ProtectObjects>");
98
writer.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
99
writer.WriteLine("</WorksheetOptions>");
100
writer.WriteLine("</Worksheet>");
101
writer.WriteLine("</Workbook>");
102
writer.Close();
103
Response.Write("<scriptlanguage=\"javascript\">"+"alert('"+"转换成功!转换后的Excel文件名为:"+ExcelFileName+"')"+"</script>");
104
}
105
catch(Exceptionex)
106

{
107
Response.Write("<scriptlanguage=\"javascript\">"+"alert('"+"操作失败!出错信息:"+ex.Message+"')"+"</script>");
108
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
(四). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/XMLChangeToExcel.rar