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

如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在代码中生成Excel表并带有中文表头?

发布网友 发布时间:2022-04-09 04:16

我来回答

3个回答

热心网友 时间:2022-04-09 05:46

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

导出表中的数据到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-09 07:04

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-09 08:38

在导入excel的时候先添加表头的中文数据,在添加数据库数据。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
罗马全面战争怎么样提高元老院评价? 半夜家中镜匾忽然碎了 镜子忽然碎掉怎么解 化能异养型微生物分类 如何判断自养微生物与异养微生物 如何得知某微生物是否为哪种氨基酸的异养型微生物。 滨州市北海振宇电子科技有限责任公司怎么样? 北京振宇科技有限公司怎么样? 上海振宇化工科技有限公司经营范围 商业医保是否值得购买? 网红带货该选择哪个平台? 想找网红带货,通过什么途径方便呢? 商家去哪儿找带货主播? 如何找到网红带货的平台? 想找网红带货,有哪些专业的平台呢? 学完了教育心理学学习理论,对我们今后的学习有哪些启发? 怎样喂养金鱼??? 有喜欢养鱼的吗?请教了.我养了几条小金鱼,不知道怎么去换水,喂食?使它们健康长寿. 山西太原如何过新年(民风民俗)? 山西的过年习俗 哪个牌子的油烟机吸油烟效果比较好?求推荐 iPhone的digital touch如果我想发个吻却点成了火球如何取消发送 会计从业资格考试会计电算化用什么软件? digital touch 发送给别人几分钟以后,自己这边记录消失了,是怎么回事? 我和我朋友都有apple watch 也都连手机了,为什么在他的手表上有我的digital tou 西门子烟机灶具评测 如何挑选烟机灶具 ? 上海会计从业考试 电算化考试 用的是什么软件 苹果手机短信上的digital touch是什么意思? 南泥湾小米有什么特点? 陕北小米有什么种类? 土豆丝凉拌怎么做? 问一下郑州做过UU跑腿的朋友们,想跑UU是不是必须要办理健康证、打过新冠疫苗才能接单? 土豆丝凉拌菜怎么做如何做好吃 UU培养阳性,前列腺检查中:白细胞(WBC)12- 铃木uu125后鼓刹制动蹄块尺寸是多少? 凉拌土豆丝的正宗做法,凉拌土豆丝怎样做才好吃的做法 今天是9月12,星期三。在过三天就到优优的生日了,优优的生日在几月几日? 凉拌土豆丝怎么做好吃,凉拌土豆丝的家常做法 大运会的会徽是什么?为什么会有大运会呢?UU代表什么意思?为什么大运会在8月12日?为什么吉祥物是UU?】 路由器没有无线信号怎么办 做法,正宗凉拌土豆丝怎么做 路由器没有网络怎么办 无线路由器没有信号怎么办 路由器没有用怎么办? 忘记路由器密码了怎么办 没有路由器 白色果冻状物体那是什么? 电脑开机是代码怎么办? 电脑开机从总出现一串代码? 电脑开机出现代码 如何写代码可以让程序开机启动。