首页 > 编程 > C# > 正文

C#利用XML创建Excel文档的实现方法

2020-01-24 02:33:05
字体:
来源:转载
供稿:网友

一般来说C#在不安装Excel软件的情况下,可以通过XML来创建Excel文档。因此,运行本文所述代码您无需安装Excel程序。本文原例子是使用VB.Net写的,以下的用C#改写的代码,分享给大家,供大家参考。

具体代码如下:

DataSet mDSData = new DataSet();mDSData.Tables.Add("myTable");mDSData.Tables["myTable"].Columns.Add("ID");mDSData.Tables["myTable"].Columns.Add("Name");mDSData.Tables["myTable"].Columns.Add("PassWord");for (int i = 0; i < 10; i++){  DataRow dr = mDSData.Tables["myTable"].NewRow();  dr["ID"] = i;  dr["Name"] = i;  dr["PassWord"] = i;  mDSData.Tables["myTable"].Rows.Add(dr);}SaveFileDialog dialog1 = new SaveFileDialog();dialog1.AddExtension = true;dialog1.CheckPathExists = true;dialog1.Filter = "Excel Workbooks (*.xls) | *.xls";dialog1.OverwritePrompt = true;dialog1.Title = "Save Excel Formatted Report";if (dialog1.ShowDialog() == DialogResult.OK){  int num2 = 0;  int num3 = mDSData.Tables[0].Rows.Count + 1;  int num1 = mDSData.Tables[0].Columns.Count;  num2 = 0;  string text1 = dialog1.FileName;  if (File.Exists(text1))  {    File.Delete(text1);  }  StreamWriter writer1 = new StreamWriter(text1, false);  StreamWriter writer2 = writer1;  writer2.WriteLine("<?xml version=/"1.0/"?>");  writer2.WriteLine("<?mso-application progid=/"Excel.Sheet/"?>");  writer2.WriteLine("<Workbook xmlns=/"urn:schemas-microsoft-com:office:spreadsheet/"");  writer2.WriteLine(" xmlns:o=/"urn:schemas-microsoft-com:office:office/"");  writer2.WriteLine(" xmlns:x=/"urn:schemas-microsoft-com:office:excel/"");  writer2.WriteLine(" xmlns:ss=/"urn:schemas-microsoft-com:office:spreadsheet/"");  writer2.WriteLine(" xmlns:html=/"http://www.w3.org/TR/REC-html40/">");  writer2.WriteLine(" <DocumentProperties xmlns=/"urn:schemas-microsoft-com:office:office/">");  writer2.WriteLine(" <Author>Automated Report Generator Example</Author>");  writer2.WriteLine(string.Format(" <Created>{0}T{1}Z</Created>", DateTime.Now.ToString("yyyy-mm-dd"), DateTime.Now.ToString("HH:MM:SS")));  writer2.WriteLine(" <Company>Your Company Here</Company>");  writer2.WriteLine(" <Version>11.6408</Version>");  writer2.WriteLine(" </DocumentProperties>");  writer2.WriteLine(" <ExcelWorkbook xmlns=/"urn:schemas-microsoft-com:office:excel/">");  writer2.WriteLine(" <WindowHeight>8955</WindowHeight>");  writer2.WriteLine(" <WindowWidth>11355</WindowWidth>");  writer2.WriteLine(" <WindowTopX>480</WindowTopX>");  writer2.WriteLine(" <WindowTopY>15</WindowTopY>");  writer2.WriteLine(" <ProtectStructure>False</ProtectStructure>");  writer2.WriteLine(" <ProtectWindows>False</ProtectWindows>");  writer2.WriteLine(" </ExcelWorkbook>");  writer2.WriteLine(" <Styles>");  writer2.WriteLine(" <Style ss:ID=/"Default/" ss:Name=/"Normal/">");  writer2.WriteLine("  <Alignment ss:Vertical=/"Bottom/"/>");  writer2.WriteLine("  <Borders/>");  writer2.WriteLine("  <Font/>");  writer2.WriteLine("  <Interior/>");  writer2.WriteLine("  <Protection/>");  writer2.WriteLine(" </Style>");  writer2.WriteLine(" <Style ss:ID=/"s21/">");  writer2.WriteLine("  <Alignment ss:Vertical=/"Bottom/" ss:WrapText=/"1/"/>");  writer2.WriteLine(" </Style>");  writer2.WriteLine(" </Styles>");  writer2.WriteLine(" <Worksheet ss:Name=/"MyReport/">");  writer2.WriteLine(string.Format(" <Table ss:ExpandedColumnCount=/"{0}/" ss:ExpandedRowCount=/"{1}/" x:FullColumns=/"1/"", num1.ToString(), num3.ToString()));  writer2.WriteLine("  x:FullRows=/"1/">");  foreach (DataRow row1 in mDSData.Tables[0].Rows)  {    writer2.WriteLine("<Row>");    for (num2 = 0; num2 != num1; num2++)    {      writer2.Write("<Cell ss:StyleID=/"s21/"><Data ss:Type=/"String/">");      writer2.Write(row1[num2].ToString());      writer2.WriteLine("</Data></Cell>");    }    writer2.WriteLine("</Row>");  }  writer2.WriteLine(" </Table>");  writer2.WriteLine(" <WorksheetOptions xmlns=/"urn:schemas-microsoft-com:office:excel/">");  writer2.WriteLine("  <Selected/>");  writer2.WriteLine("  <Panes>");  writer2.WriteLine("  <Pane>");  writer2.WriteLine("   <Number>3</Number>");  writer2.WriteLine("   <ActiveRow>1</ActiveRow>");  writer2.WriteLine("  </Pane>");  writer2.WriteLine("  </Panes>");  writer2.WriteLine("  <ProtectObjects>False</ProtectObjects>");  writer2.WriteLine("  <ProtectScenarios>False</ProtectScenarios>");  writer2.WriteLine(" </WorksheetOptions>");  writer2.WriteLine(" </Worksheet>");  writer2.WriteLine(" <Worksheet ss:Name=/"Sheet2/">");  writer2.WriteLine(" <WorksheetOptions xmlns=/"urn:schemas-microsoft-com:office:excel/">");  writer2.WriteLine("  <ProtectObjects>False</ProtectObjects>");  writer2.WriteLine("  <ProtectScenarios>False</ProtectScenarios>");  writer2.WriteLine(" </WorksheetOptions>");  writer2.WriteLine(" </Worksheet>");  writer2.WriteLine(" <Worksheet ss:Name=/"Sheet3/">");  writer2.WriteLine(" <WorksheetOptions xmlns=/"urn:schemas-microsoft-com:office:excel/">");  writer2.WriteLine("  <ProtectObjects>False</ProtectObjects>");  writer2.WriteLine("  <ProtectScenarios>False</ProtectScenarios>");  writer2.WriteLine(" </WorksheetOptions>");  writer2.WriteLine(" </Worksheet>");  writer2.WriteLine("</Workbook>");  writer2 = null;  writer1.Close();  MessageBox.Show("Report Created", "Success", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);}

这只是主要的代码,使用前需要此入using相应的命名空间,如果不知道需要哪个命名空间,可在编译时根据提示逐个添加。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表