web服务端,客户端把数据写入文件并导出
来源:互联网 发布:js中空格怎么表示 编辑:程序博客网 时间:2024/06/05 20:07
业务中经常有些需求,需要把数据通过csv文件导出,以方便用户操作数据。在这里我简单的记录下客户端和服务端的导出方式,以便下次使用。
服务端
导出方式,将数据写入response中即可,下面是代码
public void ExportDataToCsvFile(HttpResponseBase Response, DataTable dt, string FileName) { //在chrome,firefox下中文不会出现乱码 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); //有乱码,但是可以通过保存成csv,ansi格式的文本解决 //Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName); //Response.ContentType = "application/csv;charset=gbk"; string colHeaders = ""; string ls_item = ""; int i = 0; DataRow[] myRow = dt.Select(""); for (i = 0; i < dt.Columns.Count; i++) { if (i == dt.Columns.Count - 1) { colHeaders += dt.Columns[i].Caption.ToString() + "\n"; } else { colHeaders += dt.Columns[i].Caption.ToString() + ","; } } //向HTTP输出流中写入取得的数据信息 Response.Write(colHeaders); //逐行处理数据 foreach (DataRow row in myRow) { //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n for (i = 0; i < dt.Columns.Count; i++) { if (i == dt.Columns.Count - 1) { ls_item += row[i].ToString() + "\n"; } else { ls_item += row[i].ToString() + ","; } } //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 Response.Write(ls_item); ls_item = ""; } //写缓冲区中的数据到HTTP头文件中 Response.End(); }当导出chrome,firefox时,以上代码能适用,中文不会出现乱码,但是当通过IE导出,就出现了乱码,解决办法在代码的注释中,但也是间接的解决这个问题罢了。
客户端如何调用这个服务端的方法呢,只要发送一个form post请求就行,当请求返回后,浏览器就会生成一个文件下载完成的操作。
客户端
客户端导出不同浏览器的处理也是不同的
IE
function StringToExcelFile(data) { try { var xls = new ActiveXObject("Excel.Application"); xls.visible = true; var newBook = xls.Workbooks.Add; newBook.Worksheets.Add; newBook.Worksheets(1).Activate; xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation = 1; xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize = 1; var lineArray = data.split('\n'); for (var i = 0; i < lineArray.length; i++) { var row = lineArray[i]; var fieldArray = row.split(','); for (var j = 0; j < fieldArray.length; j++) { var fieldValue = fieldArray[j]; newBook.Worksheets(1).Cells(i + 1, (j + 1)).value = fieldValue; } } newBook.Worksheets(1).Name = '盘点报表'; } catch (e) { var msg = e.description; //如果需要导出,请按如下步骤设置:IE浏览器的Internet选项->安全-> //自定义级别->ActiveX控件和插件->对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本->启用"; } }注意,上面的是使用office组件导出,需要在Internet选项的安全中设置安全级别才能使用ActiveXObject组件。
firefox,chrome
<head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <meta name="author" content="oscar999"> <title> </title> <script> function clickDownload(aLink) { var str = "栏位1,栏位2,栏位3\n值1,值2,值3"; str = encodeURIComponent(str); aLink.href = "data:text/csv;charset=gb2312,"+str; aLink.click(); } </script> </head> <body> <a id="test" onclick="clickDownload(this)" download="downlaod.csv" href="#">download</a> </body> </html>但是上面的中文字乱码在excel中打开乱码,有待解决。
0 0
- web服务端,客户端把数据写入文件并导出
- 使用jxl读取模板文件,写入数据并导出excel
- 把数据写入日志文件
- C# web 把dataSet数据导出为Excel文件
- 创建文件并写入数据
- 运用BufferedWriter把数据写入文件
- 运用BufferedWriter把数据写入文件r
- Java把double数据写入文件中
- Java把double数据写入文件中
- put()函数把数据顺序写入文件
- 把音频数据写入wave文件
- MFC创建文件并写入文件数据
- C# 实现 客户端 对实时数据的采集 上传至服务端;在服务端把保存到内存中;供WEB页面调用
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- java web中如何使用将数据写入CSV文件中并下载
- 创建一个csv文件,并写入数据
- 序列化 数据 并 写入文件(.plist)
- 创建xls文件,并写入数据
- Date::Manip, DateCalc(), UnixDate()
- JQuery选择器1
- ACL规则
- 在Eclipse添加Android兼容包( v4、v7 appcompat )
- 让MySql支持Emoji表情存储
- web服务端,客户端把数据写入文件并导出
- NSString的查找字符串位置和截取字符串
- Date::Manip, Date_Cmp()
- python调用shell命令
- keans++算法
- c++第6次实验——项目3矩阵求和
- Android Studio 自动根据布局生成Activity
- 在Android上打造属于自己的Rxjava框架(四)扩展成EventBus
- springmvc+hibernate的更新问题