C#操作Excel,套用模板并对数据进行分页
2012-01-07 16:32
671 查看
Demo文件下载
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System;
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.IO;
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Data;
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Reflection;
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Diagnostics;
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using cfg = System.Configuration;
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//using Excel;
8
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace ExcelHelperTest
10
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 功能说明:套用模板输出Excel,并对数据进行分页
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 作 者:Lingyun_k
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 创建日期:2005-7-12
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// </summary>
16
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public class ExcelHelper
17
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
18
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected string templetFile = null;
19
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected string outputFile = null;
20
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected object missing = Missing.Value;
21
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
23
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 构造函数,需指定模板文件和输出文件完整路径
24
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
25
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="templetFilePath">Excel模板文件路径</param>
26
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="outputFilePath">输出Excel文件路径</param>
27
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public ExcelHelper(string templetFilePath,string outputFilePath)
28
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
29
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(templetFilePath == null)
30
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("Excel模板文件路径不能为空!");
31
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(outputFilePath == null)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("输出Excel文件路径不能为空!");
34
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(!File.Exists(templetFilePath))
36
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("指定路径的Excel模板文件不存在!");
37
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.templetFile = templetFilePath;
39
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.outputFile = outputFilePath;
40
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
42
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
44
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 将DataTable数据写入Excel文件(套用模板并分页)
45
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
46
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="dt">DataTable</param>
47
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rows">每个WorkSheet写入多少行数据</param>
48
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="top">行索引</param>
49
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="left">列索引</param>
50
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="sheetPrefixName">WorkSheet前缀名,比如:前缀名为“Sheet”,那么WorkSheet名称依次为“Sheet-1,Sheet-2
![](http://www.cnblogs.com/Images/dot.gif)
”</param>
51
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void DataTableToExcel(DataTable dt,int rows,int top,int left,string sheetPrefixName)
52
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int rowCount = dt.Rows.Count; //源DataTable行数
54
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int colCount = dt.Columns.Count; //源DataTable列数
55
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
56
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime beforeTime;
57
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime afterTime;
58
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(sheetPrefixName == null || sheetPrefixName.Trim() == "")
60
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheetPrefixName = "Sheet";
61
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//创建一个Application对象并使其可见
63
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
beforeTime = DateTime.Now;
64
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Application app = new Excel.ApplicationClass();
65
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Visible = true;
66
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
afterTime = DateTime.Now;
67
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//打开模板文件,得到WorkBook对象
69
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Workbook workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,
70
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
missing,missing,missing,missing,missing,missing,missing);
71
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得到WorkSheet对象
73
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
74
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//复制sheetCount-1个WorkSheet对象
76
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<sheetCount;i++)
77
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
78
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);
79
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
80
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
#region 将源DataTable数据写入Excel
82
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<=sheetCount;i++)
83
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
84
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int startRow = (i - 1) * rows; //记录起始行索引
85
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int endRow = i * rows; //记录结束行索引
86
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
88
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(i == sheetCount)
89
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
endRow = rowCount;
90
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//获取要写入数据的WorkSheet对象,并重命名
92
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet sheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
93
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Name = sheetPrefixName + "-" + i.ToString();
94
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//将dt中的数据写入WorkSheet
96
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0;j<endRow-startRow;j++)
97
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
98
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int k=0;k<colCount;k++)
99
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
100
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Cells[top + j,left + k] = dt.Rows[startRow + j][k].ToString();
101
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
102
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
103
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//写文本框数据
105
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
106
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
107
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
108
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtAuthor.Text = "KLY.NET的Blog";
110
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtDate.Text = DateTime.Now.ToShortDateString();
111
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtVersion.Text = "1.0.0.0";
112
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
113
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
#endregion
114
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//输出Excel文件并退出
116
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
try
117
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
118
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.SaveAs(outputFile,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlExclusive,missing,missing,missing,missing);
119
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.Close(null,null,null);
120
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Workbooks.Close();
121
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Application.Quit();
122
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Quit();
123
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
125
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
126
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
127
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workSheet=null;
129
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook=null;
130
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app=null;
131
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GC.Collect();
133
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
134
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch(Exception e)
135
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
136
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw e;
137
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
138
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
finally
139
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
140
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Process[] myProcesses;
141
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime startTime;
142
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcesses = Process.GetProcessesByName("Excel");
143
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得不到Excel进程ID,暂时只能判断进程启动时间
145
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(Process myProcess in myProcesses)
146
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
147
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
startTime = myProcess.StartTime;
148
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(startTime > beforeTime && startTime < afterTime)
150
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
151
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcess.Kill();
152
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
153
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
154
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
155
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
157
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
160
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 获取WorkSheet数量
161
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
162
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rowCount">记录总行数</param>
163
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="rows">每WorkSheet行数</param>
164
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private int GetSheetCount(int rowCount,int rows)
165
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
166
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int n = rowCount % rows; //余数
167
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(n == 0)
169
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return rowCount / rows;
170
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
171
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return Convert.ToInt32(rowCount / rows) + 1;
172
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
173
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
176
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 将二维数组数据写入Excel文件(套用模板并分页)
177
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
178
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="arr">二维数组</param>
179
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rows">每个WorkSheet写入多少行数据</param>
180
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="top">行索引</param>
181
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="left">列索引</param>
182
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="sheetPrefixName">WorkSheet前缀名,比如:前缀名为“Sheet”,那么WorkSheet名称依次为“Sheet-1,Sheet-2
![](http://www.cnblogs.com/Images/dot.gif)
”</param>
183
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void ArrayToExcel(string[,] arr,int rows,int top,int left,string sheetPrefixName)
184
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
185
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int rowCount = arr.GetLength(0); //二维数组行数(一维长度)
186
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int colCount = arr.GetLength(1); //二维数据列数(二维长度)
187
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
188
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime beforeTime;
189
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime afterTime;
190
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(sheetPrefixName == null || sheetPrefixName.Trim() == "")
192
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheetPrefixName = "Sheet";
193
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//创建一个Application对象并使其可见
195
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
beforeTime = DateTime.Now;
196
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Application app = new Excel.ApplicationClass();
197
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Visible = true;
198
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
afterTime = DateTime.Now;
199
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//打开模板文件,得到WorkBook对象
201
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Workbook workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,
202
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
missing,missing,missing,missing,missing,missing,missing);
203
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得到WorkSheet对象
205
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
206
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//复制sheetCount-1个WorkSheet对象
208
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<sheetCount;i++)
209
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
210
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);
211
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
212
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
#region 将二维数组数据写入Excel
214
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<=sheetCount;i++)
215
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
216
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int startRow = (i - 1) * rows; //记录起始行索引
217
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int endRow = i * rows; //记录结束行索引
218
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
220
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(i == sheetCount)
221
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
endRow = rowCount;
222
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//获取要写入数据的WorkSheet对象,并重命名
224
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet sheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
225
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Name = sheetPrefixName + "-" + i.ToString();
226
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//将二维数组中的数据写入WorkSheet
228
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0;j<endRow-startRow;j++)
229
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
230
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int k=0;k<colCount;k++)
231
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
232
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Cells[top + j,left + k] = arr[startRow + j,k];
233
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
234
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
235
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
237
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
238
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
239
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtAuthor.Text = "KLY.NET的Blog";
241
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtDate.Text = DateTime.Now.ToShortDateString();
242
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtVersion.Text = "1.0.0.0";
243
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
244
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
#endregion
245
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//输出Excel文件并退出
247
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
try
248
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
249
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.SaveAs(outputFile,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlExclusive,missing,missing,missing,missing);
250
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.Close(null,null,null);
251
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Workbooks.Close();
252
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Application.Quit();
253
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Quit();
254
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
256
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
257
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
258
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workSheet=null;
260
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook=null;
261
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app=null;
262
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GC.Collect();
264
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
265
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch(Exception e)
266
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
267
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw e;
268
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
269
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
finally
270
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
271
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Process[] myProcesses;
272
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime startTime;
273
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcesses = Process.GetProcessesByName("Excel");
274
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得不到Excel进程ID,暂时只能判断进程启动时间
276
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(Process myProcess in myProcesses)
277
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
278
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
startTime = myProcess.StartTime;
279
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
280
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(startTime > beforeTime && startTime < afterTime)
281
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
282
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcess.Kill();
283
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
284
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
285
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
286
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
288
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
289
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
290
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
DOTNET
1
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System;
2
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.IO;
3
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Data;
4
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Reflection;
5
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using System.Diagnostics;
6
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
using cfg = System.Configuration;
7
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//using Excel;
8
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
namespace ExcelHelperTest
10
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
12
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 功能说明:套用模板输出Excel,并对数据进行分页
13
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 作 者:Lingyun_k
14
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 创建日期:2005-7-12
15
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// </summary>
16
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public class ExcelHelper
17
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
18
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected string templetFile = null;
19
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected string outputFile = null;
20
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected object missing = Missing.Value;
21
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
23
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 构造函数,需指定模板文件和输出文件完整路径
24
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
25
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="templetFilePath">Excel模板文件路径</param>
26
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="outputFilePath">输出Excel文件路径</param>
27
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public ExcelHelper(string templetFilePath,string outputFilePath)
28
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
29
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(templetFilePath == null)
30
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("Excel模板文件路径不能为空!");
31
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(outputFilePath == null)
33
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("输出Excel文件路径不能为空!");
34
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(!File.Exists(templetFilePath))
36
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw new Exception("指定路径的Excel模板文件不存在!");
37
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.templetFile = templetFilePath;
39
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.outputFile = outputFilePath;
40
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
42
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
44
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 将DataTable数据写入Excel文件(套用模板并分页)
45
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
46
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="dt">DataTable</param>
47
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rows">每个WorkSheet写入多少行数据</param>
48
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="top">行索引</param>
49
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="left">列索引</param>
50
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="sheetPrefixName">WorkSheet前缀名,比如:前缀名为“Sheet”,那么WorkSheet名称依次为“Sheet-1,Sheet-2
![](http://www.cnblogs.com/Images/dot.gif)
”</param>
51
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void DataTableToExcel(DataTable dt,int rows,int top,int left,string sheetPrefixName)
52
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int rowCount = dt.Rows.Count; //源DataTable行数
54
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int colCount = dt.Columns.Count; //源DataTable列数
55
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
56
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime beforeTime;
57
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime afterTime;
58
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(sheetPrefixName == null || sheetPrefixName.Trim() == "")
60
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheetPrefixName = "Sheet";
61
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//创建一个Application对象并使其可见
63
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
beforeTime = DateTime.Now;
64
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Application app = new Excel.ApplicationClass();
65
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Visible = true;
66
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
afterTime = DateTime.Now;
67
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//打开模板文件,得到WorkBook对象
69
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Workbook workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,
70
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
missing,missing,missing,missing,missing,missing,missing);
71
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得到WorkSheet对象
73
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
74
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//复制sheetCount-1个WorkSheet对象
76
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<sheetCount;i++)
77
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
78
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);
79
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
80
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
#region 将源DataTable数据写入Excel
82
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<=sheetCount;i++)
83
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
84
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int startRow = (i - 1) * rows; //记录起始行索引
85
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int endRow = i * rows; //记录结束行索引
86
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
88
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(i == sheetCount)
89
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
endRow = rowCount;
90
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//获取要写入数据的WorkSheet对象,并重命名
92
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet sheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
93
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Name = sheetPrefixName + "-" + i.ToString();
94
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//将dt中的数据写入WorkSheet
96
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0;j<endRow-startRow;j++)
97
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
98
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int k=0;k<colCount;k++)
99
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
100
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Cells[top + j,left + k] = dt.Rows[startRow + j][k].ToString();
101
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
102
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
103
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//写文本框数据
105
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
106
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
107
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
108
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtAuthor.Text = "KLY.NET的Blog";
110
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtDate.Text = DateTime.Now.ToShortDateString();
111
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtVersion.Text = "1.0.0.0";
112
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
113
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
#endregion
114
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//输出Excel文件并退出
116
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
try
117
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
118
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.SaveAs(outputFile,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlExclusive,missing,missing,missing,missing);
119
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.Close(null,null,null);
120
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Workbooks.Close();
121
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Application.Quit();
122
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Quit();
123
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
125
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
126
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
127
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workSheet=null;
129
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook=null;
130
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app=null;
131
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GC.Collect();
133
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
134
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch(Exception e)
135
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
136
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw e;
137
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
138
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
finally
139
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
140
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Process[] myProcesses;
141
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime startTime;
142
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcesses = Process.GetProcessesByName("Excel");
143
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得不到Excel进程ID,暂时只能判断进程启动时间
145
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(Process myProcess in myProcesses)
146
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
147
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
startTime = myProcess.StartTime;
148
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(startTime > beforeTime && startTime < afterTime)
150
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
151
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcess.Kill();
152
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
153
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
154
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
155
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
157
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
160
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 获取WorkSheet数量
161
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
162
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rowCount">记录总行数</param>
163
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="rows">每WorkSheet行数</param>
164
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private int GetSheetCount(int rowCount,int rows)
165
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
166
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int n = rowCount % rows; //余数
167
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(n == 0)
169
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return rowCount / rows;
170
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
171
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return Convert.ToInt32(rowCount / rows) + 1;
172
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
173
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/// <summary>
176
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// 将二维数组数据写入Excel文件(套用模板并分页)
177
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// </summary>
178
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="arr">二维数组</param>
179
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="rows">每个WorkSheet写入多少行数据</param>
180
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="top">行索引</param>
181
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
/// <param name="left">列索引</param>
182
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
/// <param name="sheetPrefixName">WorkSheet前缀名,比如:前缀名为“Sheet”,那么WorkSheet名称依次为“Sheet-1,Sheet-2
![](http://www.cnblogs.com/Images/dot.gif)
”</param>
183
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void ArrayToExcel(string[,] arr,int rows,int top,int left,string sheetPrefixName)
184
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
185
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int rowCount = arr.GetLength(0); //二维数组行数(一维长度)
186
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int colCount = arr.GetLength(1); //二维数据列数(二维长度)
187
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int sheetCount = this.GetSheetCount(rowCount,rows); //WorkSheet个数
188
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime beforeTime;
189
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime afterTime;
190
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(sheetPrefixName == null || sheetPrefixName.Trim() == "")
192
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheetPrefixName = "Sheet";
193
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//创建一个Application对象并使其可见
195
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
beforeTime = DateTime.Now;
196
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Application app = new Excel.ApplicationClass();
197
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Visible = true;
198
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
afterTime = DateTime.Now;
199
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//打开模板文件,得到WorkBook对象
201
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Workbook workBook = app.Workbooks.Open(templetFile,missing,missing,missing,missing,missing,
202
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
missing,missing,missing,missing,missing,missing,missing);
203
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得到WorkSheet对象
205
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
206
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//复制sheetCount-1个WorkSheet对象
208
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<sheetCount;i++)
209
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
210
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
((Excel.Worksheet)workBook.Worksheets.get_Item(i)).Copy(missing,workBook.Worksheets[i]);
211
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
212
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
#region 将二维数组数据写入Excel
214
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int i=1;i<=sheetCount;i++)
215
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
216
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int startRow = (i - 1) * rows; //记录起始行索引
217
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int endRow = i * rows; //记录结束行索引
218
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//若是最后一个WorkSheet,那么记录结束行索引为源DataTable行数
220
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(i == sheetCount)
221
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
endRow = rowCount;
222
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//获取要写入数据的WorkSheet对象,并重命名
224
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.Worksheet sheet = (Excel.Worksheet)workBook.Worksheets.get_Item(i);
225
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Name = sheetPrefixName + "-" + i.ToString();
226
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//将二维数组中的数据写入WorkSheet
228
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int j=0;j<endRow-startRow;j++)
229
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
230
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for(int k=0;k<colCount;k++)
231
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
232
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
sheet.Cells[top + j,left + k] = arr[startRow + j,k];
233
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
234
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
235
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtAuthor = (Excel.TextBox)sheet.TextBoxes("txtAuthor");
237
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtDate = (Excel.TextBox)sheet.TextBoxes("txtDate");
238
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Excel.TextBox txtVersion = (Excel.TextBox)sheet.TextBoxes("txtVersion");
239
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtAuthor.Text = "KLY.NET的Blog";
241
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtDate.Text = DateTime.Now.ToShortDateString();
242
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
txtVersion.Text = "1.0.0.0";
243
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
244
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
#endregion
245
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//输出Excel文件并退出
247
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
try
248
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
249
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.SaveAs(outputFile,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlExclusive,missing,missing,missing,missing);
250
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook.Close(null,null,null);
251
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Workbooks.Close();
252
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Application.Quit();
253
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app.Quit();
254
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
256
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
257
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
258
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workSheet=null;
260
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
workBook=null;
261
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
app=null;
262
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GC.Collect();
264
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
265
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch(Exception e)
266
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
267
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw e;
268
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
269
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
finally
270
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
271
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Process[] myProcesses;
272
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DateTime startTime;
273
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcesses = Process.GetProcessesByName("Excel");
274
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//得不到Excel进程ID,暂时只能判断进程启动时间
276
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach(Process myProcess in myProcesses)
277
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
278
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
startTime = myProcess.StartTime;
279
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
280
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(startTime > beforeTime && startTime < afterTime)
281
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
282
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myProcess.Kill();
283
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
284
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
285
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
286
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
288
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
289
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
290
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
DOTNET
相关文章推荐
- [NET][C#]操作Excel,套用模板并对数据进行分页
- C#操作Excel,套用模板并对数据进行分页
- C#操作Excel,套用模板并对数据进行分页
- C#套用模板输出Excel,并对数据进行分页
- 套用模板输出Excel,并对数据进行分页
- 套用模板输出Excel,并对数据进行分页
- asp.net(C#)套用模板操作Excel
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- asp.net(C#)套用模板操作Excel
- asp.net(C#)套用模板操作Excel
- C#操作Excel中的数据进行计算
- c#导出数据至excel模板中,可分页
- asp.net(C#)套用模板操作Excel。
- asp.net(C#)套用模板操作Excel
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- C# 操作Excel进程与获取Excel表格数据
- java操作excel之jxls导出excel模板数据
- c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出
- 【转】C# 几十万级数据导出Excel,及Excel各种操作
- 对DataGridView进行添加、修改、删除数据操作----C#