20071116 IE FIREFOX 文件 生成 下载
http://www.yippeesoft.com
http://www.cnblogs.com/lovecherry/archive/2005/03/25/125519.html
(原创)datagrid数据导出到excel文件给客户端下载的几种方法
方法二:导出到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)
&leftsign;
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
&rightsign;
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();
asp.net 动态地生成文件下载
string str = "1234567890"; //测试用的文件内容
string fileName = "测试文件.txt"; //测试用的文件名称
byte[] DocBuffer= System.Text.Encoding.UTF8.GetBytes(str); //转换成字节流
Response.Clear();
fileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(fileName));//(这里是你要的文件名称)
Response.AppendHeader("Content-Disposition", "attachment;filename=" +fileName);
Response.ContentType = "application/octet-stream";
Response.Charset = "UTF-8";
Response.ContentEncoding =System.Text.Encoding.UTF8;
Response.BinaryWrite(DocBuffer);
Response.End(); //结束文件流输出
关于UTF-8中文导出为excel文件直接打开后乱码的问题
关键字: 中文乱码 csv
我现在遇到了这么一个问题,就是要将从数据库中查询出的内容从页面中导出为.csv文件,现在的问题是导出后在弹出的对话框中选择直接用excel打开,结果发现数据库中的utf-8编码的中文都显示乱码(数据直接显示在页面上是正确的),但是如果我不直接打开选择保存到本地,然后打开一个空白excel文件选择在数据菜单上选择导入外部数据,一直确定,显示的即是正确的内容。
听同事说在别的语言,可以将UTF-8数据转换为UNICODE,然后将UNICODE转换为ASCII码,就可以解决这个问题,但是我不知道在java里面有没有这样的转换函数,或是别的组件里面时都有?
首先文件名是是以utf-8编码保存在数据库中,文件名暂定为1_中文文件123.txt,然后作如下处理来下载
response.setContentType("application/octet-stream;charset=UTF-8");
fileName=java.net.URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面点击文件下载的时候能够正确显示中文名称1_中文文件123.txt%0A,但是文件名的结尾却出现%0A字符(个人猜测是结束符的utf-8编码);但是此时在firefox下面却显示1_%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6123.txt %0A
然后我又试了另一种方案
response.setContentType("application/octet-stream;charset=UTF-8");
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面下载的时候弹chu的文件名是乱码;而在firefox下面却正确显示1_中文文件123.txt。
http://eddysheng.javaeye.com/blog/50414
历史博文
- Wordpress的BBTHME主题修改HELLOFLASH为D13Slideshow - 2009
- 福州七夕 - 2009
- 20070325 VS2003 js 单步调试 - 2007
- 0407 Visual Studio 2005 Team Foundation Server Trial Edition - 2006
- 2005年9月记事 - 2005
- 乱七八糟25-道可道 玄之又玄 神化 - 2005
- 乱七八糟24-IT精英的宗教崇拜 - 2005