博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用OLEDB导出数据到Excel
阅读量:6327 次
发布时间:2019-06-22

本文共 1859 字,大约阅读时间需要 6 分钟。

原帖地址:http://blog.csdn.net/cpp2017/archive/2008/04/02/2245396.aspx
利用OELDB数据访问对象操作Excel文件,达到将数据导出到Excel的目的,这种方法可能用的人不太多,缺点是必须有一个存在的Excel文件。优点是服务器不需要安装Excel,且生成的Excel是标准的Excel格式可以当作数据源使用。

准备工作:

1)先用准备一个Excel文件,这个Excel文件可以是空的,或是有一定格式的当做数据模板使用。

2)将操作的目录给ASP.NET用户(ASPNET 或NETWORK SERVICE)写入权限。

以下是示例:

说明一下:如果这个模板文件是个空文件,则需要使用Create Table创建一个工作表,否则只需使用已有的表进操作就可以了。

            DataTable dt 
=
 
new
 DataTable();
            dt.Columns.Add(
"
name
"
);
            dt.Columns.Add(
"
age
"
typeof
(
int
));
            dt.Columns.Add(
"
phone
"
);
            dt.Rows.Add(
"
老张
"
40
,
"
99213812
"
);
            dt.Rows.Add(
"
小李
"
28
,
"
a21313
"
);
            dt.Rows.Add(
"
小王
"
22
,
"
2131434
"
);
            
string
 FileName 
=
 Guid.NewGuid().ToString()
+
"
.xls
"
;
            
string
 sNewFullFile 
=
 Server.MapPath(FileName);
            
try
            
{
                File.Copy(Server.MapPath(
"format.xls"), sNewFullFile);
            }
            
catch
 (Exception er)
            
{
                Response.Write(er.Message);
                
return;
            }
            
string
 strConn 
=
 
"
Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=
"
 
+
 sNewFullFile 
+
 
"
;Extended Properties=Excel 8.0;
"
;
            System.Data.OleDb.OleDbConnection conn 
=
 
new
 System.Data.OleDb.OleDbConnection(strConn);
            OleDbCommand cmd 
=
 
null
;
            
bool
 bRet 
=
 
false
;
            
try
            
{
                conn.Open();
                
                cmd  
= new OleDbCommand("create table [sheet4]([姓名] Text,[年龄] int,[电话] Text)",conn);
                cmd.ExecuteNonQuery();
                
string strSQL = "INSERT INTO [Sheet4$] ([姓名], [年龄],[电话]) VALUES (?, ?, ?)";
                cmd 
= new OleDbCommand(strSQL, conn);
                
for (int i = 0; i < 3; i++)
                
{
                    cmd.Parameters.Add(i.ToString(), OleDbType.VarChar);
                }
                DataView dv 
= dt.DefaultView;
                
foreach (DataRowView row in dv)
                
{
                     
                    cmd.Parameters[
0].Value = row["name"].ToString();
                    cmd.Parameters[
1].Value =(int) row["age"];
                    cmd.Parameters[
2].Value = row["phone"].ToString();
                    cmd.ExecuteNonQuery();                     
                }
                bRet 
= true;
               
                 
            }
            
catch
 (Exception er)
            
{
                Response.Write(er.Message);
            }
            
finally
            
{
                
if (cmd != null)
                
{
                    cmd.Dispose();
                }
                conn.Dispose();
                
            }
            
if
(bRet)
            Response.Redirect(FileName);
你可能感兴趣的文章
ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录
查看>>
UIAlertController简单使用
查看>>
二分查找中的对半查找和采用斐波那契法查找的效率分析(信息论描述)
查看>>
我对git的认识
查看>>
BZOJ2425:[HAOI2010]计数(数位DP)
查看>>
CLR读书笔记--第四章 类型基础
查看>>
CSS3实战开发 表单发光特效实战开发
查看>>
初识Ajax---简单的Ajax应用实例
查看>>
js 去除字符串空白符
查看>>
201521123026《JAVA程序设计》第13周学习总结
查看>>
【SICP练习】82 练习2.54
查看>>
[APUE]标准IO库(下)
查看>>
saltstack自动化运维系列③之saltstack的常用模块使用
查看>>
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句...
查看>>
工控安全资料
查看>>
修改linux最大文件句柄数
查看>>
网络编程---tcp/udp协议
查看>>
jmeter3.2 版本完美实现Load Test报表
查看>>
再看python多线程------threading模块
查看>>
R 从零开始,简单API集合
查看>>