-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathExcelOP.cs
206 lines (188 loc) · 8.89 KB
/
ExcelOP.cs
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
/* 版权所有:JACKOA
* 类 名 称:ExcelOP
* 作 者:胡庆杰
* 电子邮箱:1286317554@QQ.com
* 创建日期:2016-03-04
* */
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Collections;
namespace ExcelCtr
{
/// <summary>
/// Excel操作类,用于控制excel的读取和写入
/// </summary>
public class ExcelOP
{
#region 读取excel
/// <summary>将excel中的每一个表第一行为列名组合读取成一个dataset</summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static DataSet Read(string filePath)
{
DataSet ds = ExcelHelper.ImportExceltoDs(filePath);
return ds;
}
/// <summary>将excel中的每一个表第一行为列名组合读取成一个dataset</summary>
/// <param name="stream"></param>
/// <returns></returns>
public static DataSet Read(Stream stream)
{
DataSet ds = ExcelHelper.ImportExceltoDs(stream);
return ds;
}
/// <summary>读取excel中指定表名和指定相应列头行的表</summary>
/// <param name="strFileName"></param>
/// <param name="sheetNames"></param>
/// <param name="indexOfColNames"></param>
/// <returns></returns>
public static DataSet Read(string filePath, List<string> sheetNames, List<int> indexOfColNames)
{
DataSet ds = ExcelHelper.ImportExceltoDs(filePath, sheetNames, indexOfColNames);
return ds;
}
/// <summary>读取excel中指定表名和指定相应列头行的表</summary>
/// <param name="stream"></param>
/// <param name="sheetNames"></param>
/// <param name="indexOfColNames"></param>
/// <returns></returns>
public static DataSet Read(Stream stream, List<string> sheetNames, List<int> indexOfColNames)
{
DataSet ds = ExcelHelper.ImportExceltoDs(stream, sheetNames, indexOfColNames);
return ds;
}
/// <summary>读取excel中指定表索引和相应列头行的表</summary>
/// <param name="strFileName"></param>
/// <param name="sheetIndexs"></param>
/// <param name="indexOfColNames"></param>
/// <returns></returns>
public static DataSet Read(string filePath, List<int> sheetIndexs, List<int> indexOfColNames)
{
DataSet ds = ExcelHelper.ImportExceltoDs(filePath, sheetIndexs, indexOfColNames);
return ds;
}
/// <summary>读取excel中指定表索引和相应列头行的表</summary>
/// <param name="stream"></param>
/// <param name="sheetIndexs"></param>
/// <param name="indexOfColNames"></param>
/// <returns></returns>
public static DataSet Read(Stream stream, List<int> sheetIndexs, List<int> indexOfColNames)
{
DataSet ds = ExcelHelper.ImportExceltoDs(stream, sheetIndexs, indexOfColNames);
return ds;
}
/// <summary>读取excel中指定表索引以及是否有列头行的读取数据情况</summary>
/// <param name="filePath"></param>
/// <param name="sheetIndexs"></param>
/// <param name="hasColNames"></param>
/// <param name="dataStartIndex"></param>
/// <returns></returns>
public static DataSet Read(string filePath, List<int> sheetIndexs, List<bool> hasColNames, List<int[]> dataStartIndex)
{
DataSet ds = ExcelHelper.ImportExceltoDs(filePath, sheetIndexs, hasColNames, dataStartIndex);
return ds;
}
/// <summary>读取excel中指定表索引以及是否有列头行的读取数据情况</summary>
/// <param name="stream"></param>
/// <param name="sheetIndexs"></param>
/// <param name="hasColNames"></param>
/// <param name="dataStartIndex"></param>
/// <returns></returns>
public static DataSet Read(Stream stream, List<int> sheetIndexs, List<bool> hasColNames, List<int[]> dataStartIndex)
{
DataSet ds = ExcelHelper.ImportExceltoDs(stream, sheetIndexs, hasColNames, dataStartIndex);
return ds;
}
/// <summary>读取excel中指定表名以及是否有列头行的读取数据情况</summary>
/// <param name="filePath"></param>
/// <param name="sheetNames"></param>
/// <param name="hasColNames"></param>
/// <param name="dataStartIndex"></param>
/// <returns></returns>
public static DataSet Read(string filePath, List<string> sheetNames, List<bool> hasColNames, List<int[]> dataStartIndex)
{
DataSet ds = ExcelHelper.ImportExceltoDs(filePath, sheetNames, hasColNames, dataStartIndex);
return ds;
}
/// <summary>读取excel中指定表名以及是否有列头行的读取数据情况</summary>
/// <param name="stream"></param>
/// <param name="sheetNames"></param>
/// <param name="hasColNames"></param>
/// <param name="dataStartIndex"></param>
/// <returns></returns>
public static DataSet Read(Stream stream, List<string> sheetNames, List<bool> hasColNames, List<int[]> dataStartIndex)
{
DataSet ds = ExcelHelper.ImportExceltoDs(stream, sheetNames, hasColNames, dataStartIndex);
return ds;
}
#endregion
#region 写入excel
/// <summary>将ds数据写入excel文件中</summary>
/// <param name="filePath">生成excel文件的路径</param>
/// <param name="ds">生成使用的数据集</param>
public static void Write(string filePath, DataSet ds)
{
Write(filePath, ds, null);
}
/// <summary>将ds数据写入excel文件中</summary>
/// <param name="filePath">生成excel文件的路径</param>
/// <param name="ds">生成使用的数据集</param>
/// <param name="SheetHeaders">每个sheet的表头集合(顺序和ds的table对应)</param>
public static void Write(string filePath, DataSet ds, List<string> SheetHeaders)
{
FileStream fs = new FileStream(filePath, FileMode.Create);
Write(fs, ds, SheetHeaders);
}
/// <summary>将ds数据写入文件流中</summary>
/// <param name="fs">目的文件流</param>
/// <param name="ds">生成使用的数据集</param>
public static void Write(FileStream fs, DataSet ds)
{
Write(fs, ds, null);
}
/// <summary>将ds数据写入文件流中</summary>
/// <param name="fs">目的文件流</param>
/// <param name="ds">生成使用的数据集</param>
/// <param name="SheetHeaders">每个sheet的表头集合(顺序和ds的table对应)</param>
public static void Write(FileStream fs, DataSet ds, List<string> SheetHeaders)
{
Write(fs, ds, SheetHeaders, new List<string>());
}
/// <summary>将ds数据写入文件流中并指定合并行信息</summary>
/// <param name="fs">目的文件流</param>
/// <param name="ds">生成使用的数据集</param>
/// <param name="SheetHeaders">每个sheet的表头集合(顺序和ds的table对应)</param>
/// <param name="combineColIndexs">要进行纵向合并的列索引集合</param>
public static void Write(FileStream fs, DataSet ds, List<string> SheetHeaders, List<string> combineColIndexs)
{
MemoryStream stream = ExcelHelper.ExportDS(ds, SheetHeaders, combineColIndexs);
byte[] bs = stream.ToArray();
fs.Write(bs, 0, bs.Length);
fs.Flush();
fs.Close();
}
/// <summary>将ds数据写入excel文件中并指定合并行信息</summary>
/// <param name="filePath">生成excel文件的路径</param>
/// <param name="ds">生成使用的数据集</param>
/// <param name="SheetHeaders">每个sheet的表头集合(顺序和ds的table对应)</param>
/// <param name="combineColIndexs">要进行纵向合并的列索引集合</param>
public static void Write(string filePath, DataSet ds, List<string> SheetHeaders, List<string> combineColIndexs)
{
FileStream fs = new FileStream(filePath, FileMode.Create);
Write(fs, ds, SheetHeaders, combineColIndexs);
}
/// <summary>根据模板导出excel</summary>
/// <param name="ht">传进去的参数</param>
/// <param name="templatePath">模板配置文件的绝对路径,后缀名为.xml,注意仅支持97-2003格式Excel</param>
public static void WriteWithTemplate(Hashtable ht, string templateConfPath, string destfilepath)
{
ExcelTemplateOP op = new ExcelTemplateOP(templateConfPath, ht);
op.Write(destfilepath);
}
#endregion
}
}