zoukankan
html css js c++ java
使用ADO.net将数据导出到Excel并提供下载
参考Meyer的文章写的一个例子,原文地址
http://www.cnblogs.com/meyer/articles/6977.html
项目下载
public
string
DataTableToExcel(DataTable dt,
string
excelPath)
{
if
(dt
==
null
)
{
return
"
DataTable不能为空
"
;
}
int
rows
=
dt.Rows.Count;
int
cols
=
dt.Columns.Count;
StringBuilder sb;
string
connString;
if
(rows
==
0
)
{
return
"
没有数据
"
;
}
sb
=
new
StringBuilder();
connString
=
string
.Format(ConnectionString,excelPath);
//
生成创建表的脚本
sb.Append(
"
CREATE TABLE
"
);
sb.Append(dt.TableName
+
"
(
"
);
for
(
int
i
=
0
;i
<
cols;i
++
)
{
if
(i
<
cols
-
1
)
sb.Append(
string
.Format(
"
{0} varchar,
"
,dt.Columns[i].ColumnName));
else
sb.Append(
string
.Format(
"
{0} varchar)
"
,dt.Columns[i].ColumnName));
}
using
(OleDbConnection objConn
=
new
OleDbConnection(connString))
{
OleDbCommand objCmd
=
new
OleDbCommand();
objCmd.Connection
=
objConn;
objCmd.CommandText
=
sb.ToString();
try
{
objConn.Open();
objCmd.ExecuteNonQuery();
}
catch
(Exception e)
{
return
"
在Excel中创建表失败,错误信息:
"
+
e.Message;
}
生成插入数据脚本
#region
生成插入数据脚本
sb.Remove(
0
,sb.Length);
sb.Append(
"
INSERT INTO
"
);
sb.Append(dt.TableName
+
"
(
"
);
for
(
int
i
=
0
;i
<
cols;i
++
)
{
if
(i
<
cols
-
1
)
sb.Append(dt.Columns[i].ColumnName
+
"
,
"
);
else
sb.Append(dt.Columns[i].ColumnName
+
"
) values (
"
);
}
for
(
int
i
=
0
;i
<
cols;i
++
)
{
if
(i
<
cols
-
1
)
sb.Append(
"
@
"
+
dt.Columns[i].ColumnName
+
"
,
"
);
else
sb.Append(
"
@
"
+
dt.Columns[i].ColumnName
+
"
)
"
);
}
#endregion
//
建立插入动作的Command
objCmd.CommandText
=
sb.ToString();
OleDbParameterCollection param
=
objCmd.Parameters;
for
(
int
i
=
0
;i
<
cols;i
++
)
{
param.Add(
new
OleDbParameter(
"
@
"
+
dt.Columns[i].ColumnName, OleDbType.VarChar));
}
//
遍历DataTable将数据插入新建的Excel文件中
foreach
(DataRow row
in
dt.Rows)
{
for
(
int
i
=
0
; i
<
param.Count; i
++
)
{
param[i].Value
=
row[i];
}
objCmd.ExecuteNonQuery();
}
return
"
数据已成功导入Excel
"
;
}
//
end using
}
查看全文
相关阅读:
考研打卡_Day049
考研打卡_Day048
【生活】2017 开始!
朝花夕拾-android 自定义toast
朝花夕拾-android 获取当前手机的内存卡状态和网络连接状态
android media server 解析1-media player service 结构部分
android binder 进程间通信机制6-Binder进程间通信机制的JAVA接口
android binder 进程间通信机制5-Service注册和代理对象的获取
android binder 进程间通信机制4-Service Manager
android binder 进程间通信机制3-Binder 对象生死
原文地址:https://www.cnblogs.com/lingyun_k/p/298112.html
最新文章
RMAN中MAXSETSIZE和MAXPIECESIZE的用法
windows定时重启
Apache:系统找不到指定的文件: No installed ConfigArgs for the service "Apache2"
磁盘I/O 监控 iostat
failed to map segment from shared object: Permission denied(error while loading shared libraries: libz.so.1)
kernel: nfsd: too many open TCP sockets, consider increasing the number of threads
mysql 忘记密码,赋予用户权限,两台服务器的数据库之间快速导入
postgresql设置max_connections太大无法启动 (转载)
mongo find 时间条件过滤
debian 系统修改密码
热门文章
msyql error: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
debian msyql 5.1 卸载与安装
考研打卡_Day057
考研打卡_Day056
考研打卡_Day055
考研打卡_Day054
考研打卡_Day053
考研打卡_Day052
考研打卡_Day051
考研打卡_Day050
Copyright © 2011-2022 走看看