一般来说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相应的命名空间,如果不知道需要哪个命名空间,可在编译时根据提示逐个添加。
本文地址:https://www.stayed.cn/item/19284
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我