问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在...

发布网友 发布时间:2022-04-27 09:18

我来回答

3个回答

热心网友 时间:2022-04-10 22:41

用存储过程实现:直接调用存储过程就可以了。

导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型

/*--调用示例

p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_exporttb]
GO

create proc p_exporttb
@tbname sysname,--要导出的表名,注意只能是表名/视图名
@path nvarchar(1000),--文件存放目录
@fname nvarchar(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=@tbname+'.xls'

--检查文件是否已经存在
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 5.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
select @sql='',@fdlist=''
select @fdlist=@fdlist+','+a.name
,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM syscolumns a left join systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and object_id(@tbname)=id
select @sql='create table ['+@tbname
+']('+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 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

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

热心网友 时间:2022-04-10 23:59

public static void DataTable2Excel(System.Data.DataTable dtData)
    {
        System.Web.UI.WebControls.DataGrid dgExport = null;
        // 当前对话 
        System.Web.HttpContext curContext = System.Web.HttpContext.Current;
        // IO用于导出并返回excel文件 
        System.IO.StringWriter strWriter = null;
        System.Web.UI.HtmlTextWriter htmlWriter = null;

        if (dtData != null)
        {
            // 设置编码和附件格式 
            curContext.Response.ContentType = "application/vnd.ms-excel";
            curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
            curContext.Response.Charset = "";

            // 导出excel文件 
            strWriter = new System.IO.StringWriter();
            htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

            // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid 
            dgExport = new System.Web.UI.WebControls.DataGrid();
            dgExport.DataSource = dtData.DefaultView;
            dgExport.AllowPaging = false;
            dgExport.DataBind();

            // 返回客户端 
            dgExport.RenderControl(htmlWriter);
            curContext.Response.Write(strWriter.ToString());
            curContext.Response.End();
        }
    }

热心网友 时间:2022-04-11 01:34

在导入excel的时候先添加表头的中文数据,在添加数据库数据。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
冀州吉美有猫人专卖店吗 猫人内衣电视投放在哪里 怎样恢复电脑桌面千牛工作栏 电脑版的千牛在哪里更换头像千牛头像怎么显示 ...还在被执行人名下。请问法院能查封,执行拍卖吗? 征收基本农田应当谁批准 征用哪些土地需要国务院的审批 我对于电脑是零基础,能自学程序员吗?能的话应该从哪学 没电脑基础的人可以学C语言吗? 电脑白痴怎么学习c语言 asp.net导入EXCEL时如何去除行头和列头 ASP.NET(C#)中如何将Excel文件中的内容导入到已经建好的表 asp.net中如何选择本地计算机里的excel文件并将数据导入数据库 ASP.NET中如何将Excel表中的数据导入到数据库中? asp.net导入excel表格数据 什么是励志,什么是励欲 范进中举后为什么范家突然暴富?范进最后的成就有多高? Asp.net 中的Excel导入数据功能实现? asp.net在做Excel导入的时候,出现了&quot;外部表不是预期的格式&quot;的错误 薇娅以资产90亿进入中国富豪榜490名,她可以成为励志人物吗? asp.net如何导入excel,如有代码?感谢诶! 无时无刻都在琢磨如何暴富的星座有哪些? asp.net Excel数据导入 asp.net导入excel时出错? 维生素d3什么牌子好?求推荐 你知道超霸气励志的现实句子有哪些?请具体说说自己的 asp.net怎么样把excel文件导入到数据库和导出来(紧急求助+高分)_百度知... 宝宝用的维生素d都有哪些牌子的? 每个月开始的励志的话 asp.net excel的导入问题 asp.net导入excel问题! 伙伴们捷信贷款怎么样?你是怎么认为的呢? 捷信贷款怎么样?值得选择吗 捷信贷款怎么样?可以放心选择吗? 你觉得捷信贷款怎么样好不好? 你们觉得捷信贷款怎么样? 捷信贷款怎么样?服务好不好啊 捷信贷款怎么样?好申请吗? 捷信贷款怎么样?服务好吗? 捷信贷款怎么样?业内的口碑好吗? 捷信贷款这个平台好不好啊? 捷信贷款的口碑好不好 在asp.net中导入Excel文件数据到Orclace数据库表中 企业开展体育活动一般要发生哪些费用 体育活动费记什么会计科目? 河南省初中体育经费支出标准 体育活动费怎么账务处理 体育事业如何开票?可以填开哪些内容? 体育活动类活动赛事成本怎么算? 想做一个项目齐全的体育馆,设施费用大概是多少