asp.net web页面导出word

asp.net web页面导出word,第1张

asp.net

,web页面中的查询数据导出Word,实现思路

一:需要把自己查族好询后的结构组装成早搏一张数据集,如DataTable或DataSet..

二:定义需要导出的字段与数据库所创建列对应

三:确定导出那张表,传如:表名

希望兆睁铅对你有用!

1. 描述

2. 思路

3. *** 作步骤

4. 预览效果

5. 已完成模板

1. 描述编辑

FR虽然有内置的导出按钮,但是导出名称不能自定义,如果想要自定义导出文件名称,那么该如何实现呢?

2. 思路编辑

方法一:通过模板Web属性中的标题实现自定义导出文件名称。

方法二:在导出js中通过__filename__参数修改导出文件的名称。

3. *** 作步骤编辑历侍

3.1 方法一

1)打开%FR_HOME%\webapps\webroot\WEB-INF\reportlets\GettingStarted.cpt。

2)修改ds1:SELECT * FROM 销量 where 地区 ='${Diqu}'。

3)点击菜单模板>模板参数,添加模板参数Riqi。

4)点击菜单模板>模板web属性,输入标题:${Diqu+"_地区_"+Riqi}。

5)修改模板标题为动态标题:$Diqu + "地区销售概况"。

6)打开参数面板,删除查询按钮,将下拉框按钮的控件名修改为Diqu:

7)在参数面板添加标签控件,控件值液此为:导出日期:,添加日期控件,控件名称修改为:Riqi,控件值选择公式:TODAY()。

8)给下拉框控件Diqu和日期控件Riqi添加编辑后事件,实现自动查询:

js代码如下:

9)添加一个按钮控件,控件名称改为:导出,添加点击事件:

js代码如下:

注:Diqu、Riqi是参数名称,默认是在当前页面导出的

10)点击参数面板空白处,在右侧的属性面板中,将点击查询前不显示报表内容的勾去掉。

3.2 方法二

1)在上节所示基础上闹烂迅进行修改,清除模板>模板web属性内的标题。

2)修改点击事件

选择导出按钮,编辑点击事件,修改js代码:

js代码如下:

4. 预览效果编辑

4.1 PC端预览效果

实现方法:SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"])SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn)DataSet ds=new DataSet()da.Fill(ds,"table1")DataTable dt=ds.Tables["table1"]string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString() DateTime.Today.ToString("桥誉yyyyMMdd") new Random(DateTime.Now.Millisecond).Next(10000).ToString() ".csv"//存放到web.config中downloadurl指定的路径,文件格式为当前日期 4位随机数FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write)StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"))sw.WriteLine("自动编号,姓名,年龄")foreach(DataRow dr in dt.Rows){sw.WriteLine(dr["ID"] "," dr["vName"] "," dr["iAge"])}sw.Close()Response.AddHeader("Content-Disposition", "attachmentfilename=" Server.UrlEncode(name))Response.ContentType = "application/ms-excel"// 指定返回的是一个不能被客户端读取的流,必须被下载Response.WriteFile(name)// 把文件流发送到客户端Response.End()方法二:导出到csv文件,不存放到服务器,直接给浏览器输搭消羡出文件流 优点:1、随时生成,不需要占用资源2、可以结合身份认证3、同样利于数据交换 实现方法:SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"])SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn)DataSet ds=new DataSet()da.Fill(ds,"table1")DataTable dt=ds.Tables["table1"]StringWriter sw=new StringWriter()sw.WriteLine("自动编号,姓名,年龄")foreach(DataRow dr in dt.Rows){sw.WriteLine(dr["ID"] "知拍," dr["vName"] "," dr["iAge"])}sw.Close()Response.AddHeader("Content-Disposition", "attachmentfilename=test.csv")Response.ContentType = "application/ms-excel"Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312")Response.Write(sw)Response.End()对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号 代码修改如下:sw.WriteLine("自动编号\t姓名\t年龄")foreach(DataRow dr in dt.Rows){sw.WriteLine(dr["ID"] "\t" dr["vName"] "\t" dr["iAge"])}另外,修改输出的文件扩展名为xls即可。 方法三:从datagrid导出html代码,生成excel文件,给客户端下载 优点:1、有固定的格式,样子好看(datagrid的样子) 局限性: 1、不适合数据交换,里面有html代码,比较乱,没有固定格式2、datagrid不能有分页、排序等,否则出错 实现方法:Response.Clear()Response.Buffer= falseResponse.Charset="GB2312"Response.AppendHeader("Content-Disposition","attachmentfilename=test.xls")Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312")Response.ContentType = "application/ms-excel"this.EnableViewState = falseSystem.IO.StringWriter oStringWriter = new System.IO.StringWriter()System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter)this.DataGrid1.RenderControl(oHtmlTextWriter)Response.Write(oStringWriter.ToString())Response.End()在这里说明一点:有的网友反映代码出现“没有dr["id"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11983126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存