gzsxy8013
导航
博客园
首页
新随笔
联系
订阅
管理
<
2005年11月
>
日
一
二
三
四
五
六
30
31
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
1
2
3
4
5
6
7
8
9
10
统计
随笔 - 16
文章 - 29
评论 - 9
引用 - 0
公告
昵称:
申晓园
园龄:
6年5个月
粉丝:
0
关注:
0
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔档案
(16)
2005年12月 (1)
2005年11月 (14)
2005年10月 (1)
文章档案
(29)
2006年6月 (1)
2006年5月 (1)
2006年4月 (3)
2005年11月 (8)
2005年10月 (16)
cnblogs收藏
::吞硬币的小猪::
『 天道酬勤 』
12个.net 开发者值得去读的国外Blog
AntingZ的专栏
Bonny.Wong:致力于企业信息化。。。
dudu-快乐程序员
erp软件
flygoldfish(长流支流)的专栏 争取开创网络程序员新职业先河 继《金制打印通》之后,隆重共享《WebMIS.NET快速开发平台》
haibodotnet的水晶报表世界
http://esshs.cnblogs.com/
http://www.kaifz.com/
IT 菜园子
Rickie Lee's blog
System Information--任宇
uml论坛
vb delphi vc asp.net
VB.NET初学者园地
程序员的世界
工作流的网站
蝈蝈俊.net
嗨,您好!欢迎到zjcxc(邹建)的专栏>
继《金制打印通》之后,隆重共享《WebMIS.NET快速开发平台》
进销存软件
骆驼刺的专栏
门斧的专栏
孟子e章专栏
闵峰csdn
青润心情
阮高的blog
软件名称: Rational Rose 2003
思归的专栏
速马的专栏
随风.NET点滴
王洪生的BLog
闲云野鹤的专栏
小山
一个轻量级的数据访问解决方案
愚翁专栏
愚翁专栏
云中客的专栏
erp资料
http://www.fjit.com.cn/smb/
it168解决
SMB生态调查二:“第三梯队”信息化之“怪”现状
计世网
中国国家企业网
java
javascript
http://www.activewidgets.com/javascript.forum.473.2/onenter-event.html
http://www.experts-exchange.com/Web/Web_Languages/JavaScript/Q_20834313.html
http://www.javascriptfr.com
http://www.javascriptworld.com/js4e/scripts/index.html
http://www.zdnet.com.cn/developer/webdevelop/story/0,3800067013,39391180,00.htm
互联网页面浏览限制实现总结
用Javascript制作一个可自动填写的文本框(全文完) 选择自 yjgx007 的 Blog
net资料
Convert VB.NET to C#
http://www.chinaitpower.com/Dev/Programme/Net/
http://www.syncfusion.com
pdm
pdm
uml
uml 软件以用为本
个人技术网站
51windows.net
http://www.zahui.com
吴 迪 专栏
实事政治讨论
sohu评论
我的收藏连接
C# ->VB.NET
c#国外开发网站
c-sharpcorner
datagrid girl
DotNetBips
DotnetJoin
dotnetjunkies
Eggheadcafe
MSDN技术归档
MSDN中关于winform的FAQ
MSDN中文网站
ORACLE中国用户讨论组
SourceForge.NET
support.apress.com
the code project
theserverside.net
vb.net国外开发网站
vbcity.com
vb国外网站
windows forms FAQ
windows forms快速入门
windowsforms.net
www.tech-archive.net/
报表网站
编程爱好者
插件简介:一个基于.net平台的可以替代VSS版本控制工具采用XML Web Services作为通信协议.
多线程
反编译工具下载
高海东的技术资料
共创软件联盟
共享软件下载
关于SOCKETS
华录集团
欢迎光临Soft8.Net[中国首家专业软件搜索引擎],在这里能轻松地找到几乎所有的软件,以后您要找软件请来这里
慧都控件网
技术文档
开发net应用系统架构
开源网站
柳州市制造业信息化促进中心
麦高网
闵峰的专栏
如何设计一个继承自collection的类
商业智能
商业智能cnblogs
上海朗风条码-中国最权威的条码解答网站
水如烟•村的专栏
天天接活
天新网
文档在线
系统分析
下载110
学海
椰子林DotNet的天空
应用软件下载
源码天下
源码下载
支点企业信息化
中国.NET俱乐部
中国ActiveX控件下载网 - 程序员之友
中国DOTNET俱乐部
中国网盟
中文版权所有:虎霸下载在线
资讯网
组件的设计时特性
最好的.net反编译工具
资源下载网站
三好在线
最新评论
推荐排行榜
经常需要在开发中使用Excel COM,为简化使用写了这个类,感觉还是不太方便
1
using
System;
2
3
namespace
ExcelHandle
4
{
5
/**/
///
<summary>
6
///
ExcelHandle 的摘要说明。
7
///
</summary>
8
public
class
ExcelHandle
9
{
10
11
/**/
///
<summary>
12
///
Excel
13
///
</summary>
14
public
Excel.Application CurExcel
=
null
;
15
16
/**/
///
<summary>
17
///
工作簿
18
///
</summary>
19
public
Excel._Workbook CurBook
=
null
;
20
21
/**/
///
<summary>
22
///
工作表
23
///
</summary>
24
public
Excel._Worksheet CurSheet
=
null
;
25
26
private
object
mValue
=
System.Reflection.Missing.Value;
27
28
/**/
///
<summary>
29
///
构造函数
30
///
</summary>
31
public
ExcelHandle()
32
{
33
//
34
//
TODO: 在此处添加构造函数逻辑
35
//
36
37
this
.dtBefore
=
System.DateTime.Now;
38
39
CurExcel
=
new
Excel.Application();
40
41
this
.dtAfter
=
System.DateTime.Now;
42
43
this
.timestamp
=
System.DateTime.Now.ToShortDateString().Replace(
"
-
"
,
""
)
+
System.DateTime.Now.ToShortTimeString().Replace(
"
:
"
,
""
)
+
System.DateTime.Now.Second.ToString()
+
System.DateTime.Now.Millisecond.ToString();
44
45
}
46
47
/**/
///
<summary>
48
///
构造函数
49
///
</summary>
50
///
<param name="strFilePath">
加载的Excel文件名
</param>
51
public
ExcelHandle(
string
strFilePath)
52
{
53
54
this
.dtBefore
=
System.DateTime.Now;
55
56
CurExcel
=
new
Excel.Application();
57
58
this
.dtAfter
=
System.DateTime.Now;
59
60
CurBook
=
(Excel._Workbook)CurExcel.Workbooks.Open(strFilePath, mValue,
false
, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue);
61
62
this
.timestamp
=
System.DateTime.Now.ToShortDateString().Replace(
"
-
"
,
""
)
+
System.DateTime.Now.ToShortTimeString().Replace(
"
:
"
,
""
)
+
System.DateTime.Now.Second.ToString()
+
System.DateTime.Now.Millisecond.ToString();
63
64
}
65
66
/**/
///
<summary>
67
///
释放内存空间
68
///
</summary>
69
public
void
Dispose()
70
{
71
try
72
{
73
System.Runtime.InteropServices.Marshal.ReleaseComObject(CurSheet);
74
CurSheet
=
null
;
75
76
CurBook.Close(
false
, mValue, mValue);
77
System.Runtime.InteropServices.Marshal.ReleaseComObject(CurBook);
78
CurBook
=
null
;
79
80
CurExcel.Quit();
81
System.Runtime.InteropServices.Marshal.ReleaseComObject(CurExcel);
82
CurExcel
=
null
;
83
84
GC.Collect();
85
GC.WaitForPendingFinalizers();
86
87
}
88
catch
(System.Exception ex)
89
{
90
this
.MessageWarning(
"
在释放Excel内存空间时发生了一个错误:
"
, ex);
91
}
92
finally
93
{
94
foreach
(System.Diagnostics.Process pro
in
System.Diagnostics.Process.GetProcessesByName(
"
Excel
"
))
95
if
(pro.StartTime
>
this
.dtBefore
&&
pro.StartTime
<
this
.dtAfter)
96
pro.Kill();
97
}
98
System.GC.SuppressFinalize(
this
);
99
}
100
101
102
private
string
filepath;
103
private
string
timestamp;
104
private
System.DateTime dtBefore;
105
private
System.DateTime dtAfter;
106
107
108
/**/
///
<summary>
109
///
Excel文件名
110
///
</summary>
111
public
string
FilePath
112
{
113
get
114
{
115
return
this
.filepath;
116
}
117
set
118
{
119
this
.filepath
=
value;
120
}
121
}
122
123
/**/
///
<summary>
124
///
是否打开Excel界面
125
///
</summary>
126
public
bool
Visible
127
{
128
set
129
{
130
CurExcel.Visible
=
value;
131
}
132
}
133
134
/**/
///
<summary>
135
///
以时间字符串作为保存文件的名称
136
///
</summary>
137
public
string
TimeStamp
138
{
139
get
140
{
141
return
this
.timestamp;
142
}
143
set
144
{
145
this
.timestamp
=
value;
146
}
147
}
148
149
150
/**/
///
<summary>
151
///
加载Excel文件
152
///
</summary>
153
public
void
Load()
154
{
155
if
(CurBook
==
null
&&
this
.filepath
!=
null
)
156
CurBook
=
(Excel._Workbook)CurExcel.Workbooks.Open(
this
.filepath, mValue,
false
, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue);
157
}
158
159
/**/
///
<summary>
160
///
加载Excel文件
161
///
</summary>
162
///
<param name="strFilePath">
Excel文件名
</param>
163
public
void
Load(
string
strFilePath)
164
{
165
if
(CurBook
==
null
)
166
CurBook
=
(Excel._Workbook)CurExcel.Workbooks.Open(strFilePath, mValue,
false
, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue, mValue);
167
}
168
169
/**/
///
<summary>
170
///
新建工作表
171
///
</summary>
172
///
<param name="strWorkSheetName">
工作表名称
</param>
173
public
void
NewWorkSheet(
string
strWorkSheetName)
174
{
175
CurSheet
=
(Excel._Worksheet)CurBook.Sheets.Add(CurBook.Sheets[
1
], mValue, mValue, mValue);
176
CurSheet.Name
=
strWorkSheetName;
177
}
178
179
/**/
///
<summary>
180
///
在指定单元格插入指定的值
181
///
</summary>
182
///
<param name="strCell">
单元格,如“A4”
</param>
183
///
<param name="objValue">
文本、数字等值
</param>
184
public
void
WriteCell(
string
strCell,
object
objValue)
185
{
186
CurSheet.get_Range(strCell, mValue).Value2
=
objValue;
187
}
188
189
/**/
///
<summary>
190
///
在指定Range中插入指定的值
191
///
</summary>
192
///
<param name="strStartCell">
Range的开始单元格
</param>
193
///
<param name="strEndCell">
Range的结束单元格
</param>
194
///
<param name="objValue">
文本、数字等值
</param>
195
public
void
WriteRange(
string
strStartCell,
string
strEndCell,
object
objValue)
196
{
197
CurSheet.get_Range(strStartCell, strEndCell).Value2
=
objValue;
198
}
199
200
201
/**/
///
<summary>
202
///
合并单元格,并在合并后的单元格中插入指定的值
203
///
</summary>
204
///
<param name="strStartCell"></param>
205
///
<param name="strEndCell"></param>
206
///
<param name="objValue"></param>
207
public
void
WriteAfterMerge(
string
strStartCell,
string
strEndCell,
object
objValue)
208
{
209
CurSheet.get_Range(strStartCell, strEndCell).Merge(mValue);
210
CurSheet.get_Range(strStartCell, mValue).Value2
=
objValue;
211
}
212
213
/**/
///
<summary>
214
///
在连续单元格中插入一个DataTable中的值
215
///
</summary>
216
///
<param name="strStartCell">
开始的单元格
</param>
217
///
<param name="dtData">
存储数据的DataTable
</param>
218
public
void
WriteTable(
string
strStartCell, System.Data.DataTable dtData)
219
{
220
object
[,] arrData
=
new
object
[dtData.Rows.Count, dtData.Columns.Count];
221
222
for
(
int
i
=
0
; i
<
dtData.Rows.Count; i
++
)
223
for
(
int
j
=
0
; j
<
dtData.Columns.Count; j
++
)
224
arrData[i, j]
=
dtData.Rows[i][j];
225
226
CurSheet.get_Range(strStartCell,
this
.GetEndCell(strStartCell, dtData.Rows.Count
-
1
, dtData.Columns.Count
-
1
)).Value2
=
arrData;
227
228
arrData
=
null
;
229
}
230
231
/**/
///
<summary>
232
///
在连续单元格中插入一个DataTable并作超级链接
233
///
</summary>
234
///
<param name="strStartCell">
起始单元格标识符
</param>
235
///
<param name="dtData">
存储数据的DataTable
</param>
236
///
<param name="strLinkField">
链接的地址字段
</param>
237
///
<param name="strTextField">
链接的文本字段
</param>
238
public
void
WriteTableAndLink(
string
strStartCell, System.Data.DataTable dtData,
string
strLinkField,
string
strTextField)
239
{
240
object
[,] arrData
=
new
object
[dtData.Rows.Count, dtData.Columns.Count
-
1
];
241
242
for
(
int
i
=
0
; i
<
dtData.Rows.Count; i
++
)
243
{
244
for
(
int
j
=
0
; j
<
dtData.Columns.Count; j
++
)
245
{
246
if
(j
>
dtData.Columns.IndexOf(strLinkField))
247
arrData[i, j
-
1
]
=
dtData.Rows[i][j];
248
else
if
(j
<
dtData.Columns.IndexOf(strLinkField))
249
arrData[i, j]
=
dtData.Rows[i][j];
250
}
251
}
252
253
CurSheet.get_Range(strStartCell,
this
.GetEndCell(strStartCell, dtData.Rows.Count
-
1
, dtData.Columns.Count
-
2
)).Value2
=
arrData;
254
255
for
(
int
i
=
0
; i
<
dtData.Rows.Count; i
++
)
256
this
.AddHyperLink(
this
.NtoL(
this
.LtoN(
this
.GetCellLetter(strStartCell))
+
dtData.Columns.IndexOf(strTextField))
+
System.Convert.ToString(
this
.GetCellNumber(strStartCell)
+
i), dtData.Rows[i][strLinkField].ToString()
+
"
.htm
"
,
"
点击查看详细
"
, dtData.Rows[i][strTextField].ToString());
257
258
arrData
=
null
;
259
}
260
261
/**/
///
<summary>
262
///
为单元格设置公式
263
///
</summary>
264
///
<param name="strCell">
单元格标识符
</param>
265
///
<param name="strFormula">
公式
</param>
266
public
void
SetFormula(
string
strCell,
string
strFormula)
267
{
268
CurSheet.get_Range(strCell, mValue).Formula
=
strFormula;
269
}
270
271
/**/
///
<summary>
272
///
设置单元格或连续区域的字体为黑体
273
///
</summary>
274
///
<param name="strCell">
单元格标识符
</param>
275
public
void
SetBold(
string
strCell)
276
{
277
CurSheet.get_Range(strCell, mValue).Font.Bold
=
true
;
278
}
279
280
/**/
///
<summary>
281
///
设置连续区域的字体为黑体
282
///
</summary>
283
///
<param name="strStartCell">
开始单元格标识符
</param>
284
///
<param name="strEndCell">
结束单元格标识符
</param>
285
public
void
SetBold(
string
strStartCell,
string
strEndCell)
286
{
287
CurSheet.get_Range(strStartCell, strEndCell).Font.Bold
=
true
;
288
}
289
290
/**/
///
<summary>
291
///
设置单元格或连续区域的字体颜色
292
///
</summary>
293
///
<param name="strCell">
单元格标识符
</param>
294
///
<param name="clrColor">
颜色
</param>
295
public
void
SetColor(
string
strCell, System.Drawing.Color clrColor)
296
{
297
CurSheet.get_Range(strCell, mValue).Font.Color
=
System.Drawing.ColorTranslator.ToOle(clrColor);
298
}
299
300
/**/
///
<summary>
301
///
设置连续区域的字体颜色
302
///
</summary>
303
///
<param name="strStartCell">
开始单元格标识符
</param>
304
///
<param name="strEndCell">
结束单元格标识符
</param>
305
///
<param name="clrColor">
颜色
</param>
306
public
void
SetColor(
string
strStartCell,
string
strEndCell, System.Drawing.Color clrColor)
307
{
308
CurSheet.get_Range(strStartCell, strEndCell).Font.Color
=
System.Drawing.ColorTranslator.ToOle(clrColor);
309
}
310
311
/**/
///
<summary>
312
///
设置单元格或连续区域的边框:上下左右都为黑色连续边框
313
///
</summary>
314
///
<param name="strCell">
单元格标识符
</param>
315
public
void
SetBorderAll(
string
strCell)
316
{
317
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeTop].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
318
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle
=
Excel.XlLineStyle.xlContinuous;
319
320
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeBottom].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
321
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle
=
Excel.XlLineStyle.xlContinuous;
322
323
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeLeft].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
324
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle
=
Excel.XlLineStyle.xlContinuous;
325
326
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeRight].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
327
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle
=
Excel.XlLineStyle.xlContinuous;
328
329
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlInsideHorizontal].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
330
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle
=
Excel.XlLineStyle.xlContinuous;
331
332
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlInsideVertical].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
333
CurSheet.get_Range(strCell, mValue).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle
=
Excel.XlLineStyle.xlContinuous;
334
335
336
}
337
338
/**/
///
<summary>
339
///
设置连续区域的边框:上下左右都为黑色连续边框
340
///
</summary>
341
///
<param name="strStartCell">
开始单元格标识符
</param>
342
///
<param name="strEndCell">
结束单元格标识符
</param>
343
public
void
SetBorderAll(
string
strStartCell,
string
strEndCell)
344
{
345
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeTop].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
346
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle
=
Excel.XlLineStyle.xlContinuous;
347
348
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeBottom].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
349
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle
=
Excel.XlLineStyle.xlContinuous;
350
351
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeLeft].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
352
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle
=
Excel.XlLineStyle.xlContinuous;
353
354
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeRight].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
355
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle
=
Excel.XlLineStyle.xlContinuous;
356
357
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlInsideHorizontal].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
358
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle
=
Excel.XlLineStyle.xlContinuous;
359
360
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlInsideVertical].Color
=
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
361
CurSheet.get_Range(strStartCell, strEndCell).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle
=
Excel.XlLineStyle.xlContinuous;
362
}
363
364
/**/
///
<summary>
365
///
设置单元格或连续区域水平居左
366
///
</summary>
367
///
<param name="strCell">
单元格标识符
</param>
368
public
void
SetHAlignLeft(
string
strCell)
369
{
370
CurSheet.get_Range(strCell, mValue).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignLeft;
371
}
372
373
/**/
///
<summary>
374
///
设置连续区域水平居左
375
///
</summary>
376
///
<param name="strStartCell">
开始单元格标识符
</param>
377
///
<param name="strEndCell">
结束单元格标识符
</param>
378
public
void
SetHAlignLeft(
string
strStartCell,
string
strEndCell)
379
{
380
CurSheet.get_Range(strStartCell, strEndCell).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignLeft;
381
}
382
383
/**/
///
<summary>
384
///
设置单元格或连续区域水平居左
385
///
</summary>
386
///
<param name="strCell">
单元格标识符
</param>
387
public
void
SetHAlignCenter(
string
strCell)
388
{
389
CurSheet.get_Range(strCell, mValue).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignCenter;
390
}
391
392
/**/
///
<summary>
393
///
设置连续区域水平居中
394
///
</summary>
395
///
<param name="strStartCell">
开始单元格标识符
</param>
396
///
<param name="strEndCell">
结束单元格标识符
</param>
397
public
void
SetHAlignCenter(
string
strStartCell,
string
strEndCell)
398
{
399
CurSheet.get_Range(strStartCell, strEndCell).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignCenter;
400
}
401
402
/**/
///
<summary>
403
///
设置单元格或连续区域水平居右
404
///
</summary>
405
///
<param name="strCell">
单元格标识符
</param>
406
public
void
SetHAlignRight(
string
strCell)
407
{
408
CurSheet.get_Range(strCell, mValue).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignRight;
409
}
410
411
/**/
///
<summary>
412
///
设置连续区域水平居右
413
///
</summary>
414
///
<param name="strStartCell">
开始单元格标识符
</param>
415
///
<param name="strEndCell">
结束单元格标识符
</param>
416
public
void
SetHAlignRight(
string
strStartCell,
string
strEndCell)
417
{
418
CurSheet.get_Range(strStartCell, strEndCell).HorizontalAlignment
=
Excel.XlHAlign.xlHAlignRight;
419
}
420
421
/**/
///
<summary>
422
///
设置单元格或连续区域的显示格式
423
///
</summary>
424
///
<param name="strCell">
单元格标识符
</param>
425
///
<param name="strNF">
如"#,##0.00"的显示格式
</param>
426
public
void
SetNumberFormat(
string
strCell,
string
strNF)
427
{
428
CurSheet.get_Range(strCell, mValue).NumberFormat
=
strNF;
429
}
430
431
/**/
///
<summary>
432
///
设置连续区域的显示格式
433
///
</summary>
434
///
<param name="strStartCell">
开始单元格标识符
</param>
435
///
<param name="strEndCell">
结束单元格标识符
</param>
436
///
<param name="strNF">
如"#,##0.00"的显示格式
</param>
437
public
void
SetNumberFormat(
string
strStartCell,
string
strEndCell,
string
strNF)
438
{
439
CurSheet.get_Range(strStartCell, strEndCell).NumberFormat
=
strNF;
440
}
441
442
/**/
///
<summary>
443
///
设置单元格或连续区域的字体大小
444
///
</summary>
445
///
<param name="strCell">
单元格或连续区域标识符
</param>
446
///
<param name="intFontSize"></param>
447
public
void
SetFontSize(
string
strCell,
int
intFontSize)
448
{
449
CurSheet.get_Range(strCell, mValue).Font.Size
=
intFontSize.ToString();
450
}
451
452
/**/
///
<summary>
453
///
设置连续区域的字体大小
454
///
</summary>
455
///
<param name="strStartCell">
开始单元格标识符
</param>
456
///
<param name="strEndCell">
结束单元格标识符
</param>
457
///
<param name="intFontSize">
字体大小
</param>
458
public
void
SetFontSize(
string
strStartCell,
string
strEndCell,
int
intFontSize)
459
{
460
CurSheet.get_Range(strStartCell, strEndCell).Font.Size
=
intFontSize.ToString();
461
}
462
463
/**/
///
<summary>
464
///
设置列宽
465
///
</summary>
466
///
<param name="strColID">
列标识,如A代表第一列
</param>
467
///
<param name="decWidth">
宽度
</param>
468
public
void
SetColumnWidth(
string
strColID,
double
dblWidth)
469
{
470
((Excel.Range)CurSheet.Columns.GetType().InvokeMember(
"
Item
"
, System.Reflection.BindingFlags.GetProperty,
null
, CurSheet.Columns,
new
object
[]
{(strColID
+
"
:
"
+
strColID).ToString()}
)).ColumnWidth
=
dblWidth;
471
}
472
473
/**/
///
<summary>
474
///
为单元格添加超级链接
475
///
</summary>
476
///
<param name="strCell">
单元格标识符
</param>
477
///
<param name="strAddress">
链接地址
</param>
478
///
<param name="strTip">
屏幕提示
</param>
479
///
<param name="strText">
链接文本
</param>
480
public
void
AddHyperLink(
string
strCell,
string
strAddress,
string
strTip,
string
strText)
481
{
482
CurSheet.Hyperlinks.Add(CurSheet.get_Range(strCell, mValue), strAddress, mValue, strTip, strText);
483
}
484
485
/**/
///
<summary>
486
///
已知开始的单元格标识,求intR行、intColumn列后的单元格标识
487
///
</summary>
488
///
<param name="strStartCell">
开始单元格标识
</param>
489
///
<param name="intR">
行数
</param>
490
///
<param name="intC">
列数
</param>
491
///
<returns>
单元格标识符结果
</returns>
492
public
string
GetEndCell(
string
strStartCell,
int
intR,
int
intC)
493
{
494
495
System.Text.RegularExpressions.Regex regex
=
new
System.Text.RegularExpressions.Regex(
@"
^(?<vLetter>[A-Z]+)(?<vNumber>\d+)
"
);
496
497
return
this
.NtoL(
this
.LtoN(regex.Match(strStartCell).Result(
"
${vLetter}
"
))
+
intC)
+
System.Convert.ToString((System.Convert.ToInt32(regex.Match(strStartCell).Result(
"
${vNumber}
"
))
+
intR));
498
499
}
500
501
/**/
///
<summary>
502
///
获取单元格标识符中的字母
503
///
</summary>
504
///
<param name="strCell">
单元格标识符
</param>
505
///
<returns>
单元格标识符对应的字母
</returns>
506
public
string
GetCellLetter(
string
strCell)
507
{
508
System.Text.RegularExpressions.Regex regex
=
new
System.Text.RegularExpressions.Regex(
@"
^(?<vLetter>[A-Z]+)(?<vNumber>\d+)
"
);
509
return
regex.Match(strCell).Result(
"
${vLetter}
"
);
510
}
511
512
/**/
///
<summary>
513
///
获取单元格标识符中的数字
514
///
</summary>
515
///
<param name="strCell">
单元格标识符
</param>
516
public
int
GetCellNumber(
string
strCell)
517
{
518
System.Text.RegularExpressions.Regex regex
=
new
System.Text.RegularExpressions.Regex(
@"
^(?<vLetter>[A-Z]+)(?<vNumber>\d+)
"
);
519
return
System.Convert.ToInt32(regex.Match(strCell).Result(
"
${vNumber}
"
));
520
}
521
522
523
/**/
///
<summary>
524
///
另存为xls文件
525
///
</summary>
526
///
<param name="strFilePath">
文件路径
</param>
527
public
void
Save(
string
strFilePath)
528
{
529
CurBook.SaveCopyAs(strFilePath);
530
}
531
532
/**/
///
<summary>
533
///
另存为html文件
534
///
</summary>
535
///
<param name="strFilePath">
文件路径
</param>
536
public
void
SaveHtml(
string
strFilePath)
537
{
538
CurBook.SaveAs(strFilePath, Excel.XlFileFormat.xlHtml, mValue, mValue, mValue, mValue, Excel.XlSaveAsAccessMode.xlNoChange, mValue, mValue, mValue, mValue, mValue);
539
}
540
541
public
void
CreateHtmlFile()
542
{
543
544
}
545
546
547
548
辅助函数
#region
辅助函数
549
550
/**/
///
<summary>
551
///
调用MessageBox显示警告信息
552
///
</summary>
553
///
<param name="text">
警告信息
</param>
554
private
void
MessageWarning(
string
text)
555
{
556
System.Windows.Forms.MessageBox.Show(text,
"
Excel操作组件
"
, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
557
}
558
559
/**/
///
<summary>
560
///
调用MessageBox显示警告信息
561
///
</summary>
562
///
<param name="text">
警告信息
</param>
563
///
<param name="ex">
产生警告的异常
</param>
564
private
void
MessageWarning(
string
text, System.Exception ex)
565
{
566
System.Windows.Forms.MessageBox.Show(text
+
"
\n\n错误信息:\n
"
+
ex.Message
+
"
\n堆栈跟踪:
"
+
ex.StackTrace
+
"
\n错误来源:
"
+
ex.Source,
"
Excel操作组件
"
, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
567
}
568
569
/**/
///
<summary>
570
///
字母转换为数字,Excel列头,如A-1;AA-27
571
///
</summary>
572
///
<param name="strLetter">
字母
</param>
573
///
<returns>
字母对应的数字
</returns>
574
private
int
LtoN(
string
strLetter)
575
{
576
int
intRtn
=
0
;
577
578
string
strLetters
=
"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
"
;
579
580
if
(strLetter.Length
==
2
)
581
intRtn
+=
(strLetters.IndexOf(strLetter.Substring(
0
,
1
))
+
1
)
*
26
;
582
583
intRtn
+=
strLetters.IndexOf(strLetter.Substring(strLetter.Length
-
1
,
1
))
+
1
;
584
585
return
intRtn;
586
587
}
588
589
/**/
///
<summary>
590
///
数字转换为字母,Excel列头,如1-A;27-AA
591
///
</summary>
592
///
<param name="intNumber">
数字
</param>
593
///
<returns>
数字对应的字母
</returns>
594
private
string
NtoL(
int
intNumber)
595
{
596
if
(intNumber
>
702
)
597
return
String.Empty;
598
599
if
(intNumber
==
702
)
600
return
"
ZZ
"
;
601
602
string
strRtn
=
String.Empty;
603
604
string
strLetters
=
"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
"
;
605
606
if
(intNumber
>
26
)
607
strRtn
=
strLetters.Substring(intNumber
/
26
-
1
,
1
);
608
609
strRtn
+=
strLetters.Substring((intNumber
%
26
)
-
1
,
1
);
610
611
return
strRtn;
612
}
613
614
#endregion
辅助函数
615
616
617
618
}
619
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2005-11-09 13:36
申晓园
阅读(243)
评论(0)
编辑
收藏
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
谷歌将出售Clearwire股份 不到收购价1/10
·
为什么Google比苹果更令微软恐惧?
·
思科拟2.71亿美元收购私有公司Lightwire
·
社交商务公司Bazaarvoice将于2月24日进行IPO
·
戴尔收购备份软件公司AppAssure
»
更多新闻...
最新知识库文章
:
·
领域模型管理与AOP
·
编程的艺术:漂亮的代码和漂亮的软件
·
GIT分支管理是一门艺术
·
编程:是一门艺术
·
编程是一门艺术吗?
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
Powered by:
博客园
Copyright © 申晓园