zoukankan
html css js c++ java
【转】 asp.net数据导出EXCEL
/**/
/**/
/**/
/*
--数据导出EXCEL
导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件
如果文件不存在,将自动创建文件
如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型
--邹建 2003.10(引用请保留此信息)--
*/
/**/
/**/
/**/
/*
--调用示例
p_exporttb @sqlstr='select * from 地区资料'
,@path='c:',@fname='aa.xls',@sheetname='地区资料'
--
*/
create
proc
p_exporttb
@sqlstr
varchar
(
8000
),
--
查询语句,如果查询语句中使用了order by ,请加上top 100 percent
@path
nvarchar
(
1000
),
--
文件存放目录
@fname
nvarchar
(
250
),
--
文件名
@sheetname
varchar
(
250
)
=
''
--
要创建的工作表名,默认为文件名
as
declare
@err
int
,
@src
nvarchar
(
255
),
@desc
nvarchar
(
255
),
@out
int
declare
@obj
int
,
@constr
nvarchar
(
1000
),
@sql
varchar
(
8000
),
@fdlist
varchar
(
8000
)
--
参数检测
if
isnull
(
@fname
,
''
)
=
''
set
@fname
=
'
temp.xls
'
if
isnull
(
@sheetname
,
''
)
=
''
set
@sheetname
=
replace
(
@fname
,
'
.
'
,
'
#
'
)
--
检查文件是否已经存在
if
right
(
@path
,
1
)
<>
''
set
@path
=
@path
+
''
create
table
#tb(a
bit
,b
bit
,c
bit
)
set
@sql
=
@path
+
@fname
insert
into
#tb
exec
master..xp_fileexist
@sql
--
数据库创建语句
set
@sql
=
@path
+
@fname
if
exists
(
select
1
from
#tb
where
a
=
1
)
set
@constr
=
'
DRIVER={Microsoft Excel Driver (*.xls)};DSN=
''''
;READONLY=FALSE
'
+
'
;CREATE_DB="
'
+
@sql
+
'
";DBQ=
'
+
@sql
else
set
@constr
=
'
Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES
'
+
'
;DATABASE=
'
+
@sql
+
'
"
'
--
连接数据库
exec
@err
=
sp_oacreate
'
adodb.connection
'
,
@obj
out
if
@err
<>
0
goto
lberr
exec
@err
=
sp_oamethod
@obj
,
'
open
'
,
null
,
@constr
if
@err
<>
0
goto
lberr
--
创建表的SQL
declare
@tbname
sysname
set
@tbname
=
'
##tmp_
'
+
convert
(
varchar
(
38
),
newid
())
set
@sql
=
'
select * into [
'
+
@tbname
+
'
] from(
'
+
@sqlstr
+
'
) a
'
exec
(
@sql
)
select
@sql
=
''
,
@fdlist
=
''
select
@fdlist
=
@fdlist
+
'
,[
'
+
a.name
+
'
]
'
,
@sql
=
@sql
+
'
,[
'
+
a.name
+
'
]
'
+
case
when
b.name
like
'
%char
'
then
case
when
a.length
>
255
then
'
memo
'
else
'
text(
'
+
cast
(a.length
as
varchar
)
+
'
)
'
end
when
b.name
like
'
%int
'
or
b.name
=
'
bit
'
then
'
int
'
when
b.name
like
'
%datetime
'
then
'
datetime
'
when
b.name
like
'
%money
'
then
'
money
'
when
b.name
like
'
%text
'
then
'
memo
'
else
b.name
end
FROM
tempdb..syscolumns a
left
join
tempdb..systypes b
on
a.xtype
=
b.xusertype
where
b.name
not
in
(
'
image
'
,
'
uniqueidentifier
'
,
'
sql_variant
'
,
'
varbinary
'
,
'
binary
'
,
'
timestamp
'
)
and
a.id
=
(
select
id
from
tempdb..sysobjects
where
name
=
@tbname
)
if
@@rowcount
=
0
return
select
@sql
=
'
create table [
'
+
@sheetname
+
'
](
'
+
substring
(
@sql
,
2
,
8000
)
+
'
)
'
,
@fdlist
=
substring
(
@fdlist
,
2
,
8000
)
exec
@err
=
sp_oamethod
@obj
,
'
execute
'
,
@out
out,
@sql
if
@err
<>
0
goto
lberr
exec
@err
=
sp_oadestroy
@obj
--
导入数据
set
@sql
=
'
openrowset(
''
MICROSOFT.JET.OLEDB.4.0
''
,
''
Excel 8.0;HDR=YES
;DATABASE=
'
+
@path
+
@fname
+
'''
,[
'
+
@sheetname
+
'
$])
'
exec
(
'
insert into
'
+
@sql
+
'
(
'
+
@fdlist
+
'
) select
'
+
@fdlist
+
'
from [
'
+
@tbname
+
'
]
'
)
set
@sql
=
'
drop table [
'
+
@tbname
+
'
]
'
exec
(
@sql
)
return
lberr:
exec
sp_oageterrorinfo
0
,
@src
out,
@desc
out
lbexit:
select
cast
(
@err
as
varbinary
(
4
))
as
错误号
,
@src
as
错误源,
@desc
as
错误描述
select
@sql
,
@constr
,
@fdlist
go
4
.
--
在.net中导出到Excel的简单实例.
(
1
).添加引用Microsoft Excel
11.0
Object Library (在COM中)
(
2
).在web.config的上
<
system.web
>
里加
<
identity impersonate
=
"
true
"
/>
//
此句为了使用户能在本地打开文档,identify属性规定了身份验证的模式,一般情况下为false,这样安全性较高
(
3
).在Text.aspx上加Button1控件
(
4
).在cs页面添加
using
Microsoft.Office.Interop.Excel;
(
5
).添加单击事件,在这里处理将数据库中的数据导入excel,代码如下:
//
定义方法GetData(),返回一个数据表
private
System.Data.DataTable GetData()
{
SqlConnection conn
=
new
SqlConnection(
@"
Server=XJIE;Initial Catalog=Northwind;Uid=sa;Pwd=xjie;
"
);
SqlDataAdapter adapter
=
new
SqlDataAdapter(
"
select CompanyName 用户名,ContactTitle 联系主题,Address 住宅地址,ContactName 联系人,Phone 电话,City 城市 from Customers order by CustomerID desc
"
,conn);
DataSet ds
=
new
DataSet();
try
{
adapter.Fill(ds,
"
Customer
"
);
}
catch
(Exception ex)
{
MessageBox.Show(ex.ToString());
}
return
ds.Tables[
0
];
}
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
Application excel
=
new
Application();
int
rowIndex
=
1
;
int
colIndex
=
0
;
excel.Application.Workbooks.Add(
true
);
DataTable table
=
GetData();
//
将所得到的表的列名,赋值给单元格
foreach
(DataColumn col
in
table.Columns)
{
colIndex
++
;
excel.Cells[
1
,colIndex]
=
col.ColumnName;
}
//
同样方法处理数据
foreach
(DataRow row
in
table.Rows)
{
rowIndex
++
;
colIndex
=
0
;
foreach
(DataColumn col
in
table.Columns)
{
colIndex
++
;
excel.Cells[rowIndex,colIndex]
=
row[col.ColumnName].ToString();
}
}
//
不可见,即后台处理
excel.Visible
=
true
;
}
查看全文
相关阅读:
多表联查统计数字
在null情况下判断
一个搜索框实现同一表内多个属性的搜索
分页固定显示信息数
git常用命令
java 常用知识点
Win10 系统直接在目录下打开cmd
Linux环境 通过sftp启动jar包
使用Navicat导出可执行脚本 SqlServer数据库某表的部分数据
C#常用快捷键
原文地址:https://www.cnblogs.com/temptation/p/1145339.html
最新文章
spring-入门
java-集合
正则表达式入门01
java设计模式-状态模式
抵制网络谣言和伪科普,原生APP开发与混开究竟有什么实质区别和优劣势?
防封、防举报、防屏蔽、防红页面JS代码 -一颗优雅草科技-忘憂草
YYC蜻蜓S系统v1.9版本更新-增加任务功能-增加观看记录-下载记录-消息提醒等
七牛云-腾讯云-阿里云-云储存客户端上传与服务端上传地址区域节点---整理大全-七牛云上传地区节点
YYC松鼠短视频打包遇到 [HBuilder] 00:32:55.903 文件查找失败:‘crypto-js/md5‘ at common est.js:10
uniapp市场美狐直播美颜sdk-uniapp官方合作发布插件说明-美狐原生sdk将不再难接入
热门文章
仿小皮手游网帝国CMS模板源码 大型手游门户网站系统源码+手机版+火车头采集
源码分享意义何在?为何很多官方软件开发商都会有破解版和bug版本的系统盛行?
songshu-video-uniapp-YYC松鼠短视频前端源码-开源--优雅草科技官方发布
12月最新辰光PHP在线客服系统3.6IM即时通讯聊天源码微信公众号小程序全开
eclipse 忽略 target 设置
eclipse去掉XML报错信息
SQL语句求和操作
一个搜索框实现多种属性搜索(二)
改变表内多条数据的同一属性
多表查询去重复
Copyright © 2011-2022 走看看