
如果想到仅仅导出的话,各袜闹种数据库都有相应的开发工具,用开发工具就行了!SqlServer有自带的managment studio,Oralce的PL/sql等
我看你的意思是只更换服务器php脚本部分,目前php应该支持好多数据库,可以具体找找方法,连接目前的数据库,才是更好的方法!
实现方法:SqlConnectionconn=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",
"attachment
filename="
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",
"attachment
filename=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"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)