1
string tempPath =
"";
2
//
设置Excel模板的存放路径
3
tempPath = Server.MapPath(
"
~/xls_files/Template_DeviceIP.xls
");
4
if (tempPath.Length >
0)
5 {
6
string sql =
"
select ip,ipUser,state,dept from ip_info
";
7
//
string sql1 = "select orderId,range,comm_soc_orgname,distinguish,classes,createtime,competent_name,prin_name,phonenumber,numbercount,isParty from st_comm_soc_org order by orderId";
8
//
DataTable dtcomm = DbHelperSQL.Query(sql1).Tables[0];
9
DataTable dtsoc = DbHelperSQL.Query(sql).Tables[
0];
10
if (dtsoc !=
null && dtsoc.Rows.Count >
0)
11 {
12
13 FileStream file =
new FileStream(tempPath, FileMode.Open, FileAccess.Read);
//
读入excel模板
14
IWorkbook workbook =
new HSSFWorkbook(file);
15
//
设置Excel的样式,这里设置了表格的边框和高度
16
ICellStyle datastyle = workbook.CreateCellStyle();
17 datastyle.Alignment = HorizontalAlignment.Center;
18 datastyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
19 datastyle.TopBorderColor = HSSFColor.Black.Index;
20 datastyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
21 datastyle.RightBorderColor = HSSFColor.Black.Index;
22 datastyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
23 datastyle.BottomBorderColor = HSSFColor.Black.Index;
24 datastyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
25 datastyle.LeftBorderColor = HSSFColor.Black.Index;
26 IFont datafont = workbook.CreateFont();
27 datafont.FontHeightInPoints =
10;
//
字号
28
datastyle.SetFont(datafont);
29
30
31
string bakPath =
"
IP表.xls
";
32
int totalIndex = dtsoc.Rows.Count;
33
int rowIndex =
3;
//
起始行
34
int dtRowIndex = dtsoc.Rows.Count;
//
DataTable的数据行数
35
36 ISheet sheet = workbook.GetSheet(
"
IP表
");
37
foreach (DataRow row
in dtsoc.Rows)
38 {
39
#region 填充内容
40
//
HSSFRow dataRow = sheet.GetRow(rowIndex);
41
IRow dataRow = sheet.CreateRow(rowIndex);
42
int columnIndex =
0;
//
开始列(0为标题列,从1开始)
43
foreach (DataColumn column
in dtsoc.Columns)
44 {
45
//
列序号赋值
46
if (columnIndex >= dtsoc.Columns.Count)
47
break;
48
49
//
HSSFCell newCell = dataRow.GetCell(columnIndex);
50
//
if (newCell == null)
51
ICell newCell = dataRow.CreateCell(columnIndex);
52
string drValue = row[column].ToString();
53
54
55
switch (column.DataType.ToString())
56 {
57
case
"
System.String
":
//
字符串类型
58
newCell.SetCellValue(drValue);
59 newCell.CellStyle = datastyle;
60
break;
61
case
"
System.DateTime
":
//
日期类型
62
DateTime dateV;
63 DateTime.TryParse(drValue,
out dateV);
64 newCell.SetCellValue(dateV);
65 newCell.CellStyle = datastyle;
66
break;
67
case
"
System.Boolean
":
//
布尔型
68
bool boolV =
false;
69
bool.TryParse(drValue,
out boolV);
70 newCell.SetCellValue(boolV);
71 newCell.CellStyle = datastyle;
72
break;
73
case
"
System.Int16
":
//
整型
74
case
"
System.Int32
":
75
case
"
System.Int64
":
76
case
"
System.Byte
":
77
int intV =
0;
78
int.TryParse(drValue,
out intV);
79 newCell.SetCellValue(intV);
80 newCell.CellStyle = datastyle;
81
break;
82
case
"
System.Decimal
":
//
浮点型
83
case
"
System.Double
":
84
double doubV =
0;
85
double.TryParse(drValue,
out doubV);
86 newCell.SetCellValue(doubV);
87 newCell.CellStyle = datastyle;
88
break;
89
case
"
System.DBNull
":
//
空值处理
90
newCell.SetCellValue(
"");
91 newCell.CellStyle = datastyle;
92
break;
93
default:
94 newCell.SetCellValue(
"");
95 newCell.CellStyle = datastyle;
96
break;
97 }
98 columnIndex++;
99 }
100
#endregion
101
102 rowIndex++;
103 }
104
using (MemoryStream ms =
new MemoryStream())
105 {
106 workbook.Write(ms);
107 ms.Flush();
108 ms.Position =
0;
109 sheet =
null;
110 workbook =
null;
111
112
113
//
sheet.Dispose();
114
//
workbook.Dispose();
//
一般只用写这一个就OK了,他会遍历并释放所有资源,但当前版本有问题所以只释放sheet
115
byte[] data = ms.ToArray();
116
//
fs.Write(data, 0, data.Length);
117
118
#region 客户端保存
119 HttpResponse response = System.Web.HttpContext.Current.Response;
120 response.Clear();
121
//
Encoding pageEncode = Encoding.GetEncoding(PageEncode);
122
response.Charset =
"
UTF-8
";
123 response.ContentType =
"
application/vnd-excel
";
//
"application/vnd.ms-excel";
124
System.Web.HttpContext.Current.Response.AddHeader(
"
Content-Disposition
",
string.Format(
"
attachment; filename=
" + bakPath));
125 System.Web.HttpContext.Current.Response.BinaryWrite(data);
126 }
127
128 }
129
else
130 {
131 Page.ClientScript.RegisterStartupScript(
this.GetType(),
"
ClientScript
",
"
alert('无数据导出!');
",
true);
132
return;
133 }
134 }