-
C#教程之C#利用XML创建Excel文档的实现方法
一般来说C#在不安装Excel软件的情况下,可以通过XML来创建Excel文档。因此,运行本文所述代码您无需安装Excel程序。本文原例子是使用VB.Net写的,以下的用C#改写的代码,分享给大家,供大家参考。
具体代码如下:
1
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
109
|
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( " <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相应的命名空间,如果不知道需要哪个命名空间,可在编译时根据提示逐个添加。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式