
1、客户端因为网络原因断开连接了(例如拔网线)
2、客户端在服务器向Response的输出流写入内容前就强行中断了连接(例如在下载框出现之前就点了“停止”按钮)
3、Excel文件生成的过程太久了,客户端程序达到超时时间,主动断开了连接。
4、Nginx之类的负载均衡达到超时时间,断开了负载均衡服务器与应用服务器的连接。
建议:
只要能排除第3、4,就不是程序的问题,就没事了。
MySQL数据导出到Excel表中的具体 *** 作步骤如下:
1、打开电脑上的Navicat for MySQL快捷键,查看数据库。
2、点击root打开,单击core_db,展开选项中可以看到表。
3、点击表看到数据库中的所有表,右击表d出选项导出向导。
4、点击导出向导,d出导出的页面,导出到EXCEL表中,选择导出的格式为xls,单击下一步。
5、勾选需要导出的表,设置导出文件所在位置,点击下一步。
6、选择需要导出的表中的数据,默认的是全部栏位,单击下一步。
7、点击下一步,再次点击下一步,点击右下角的开始按钮,即可导出。
8、导出之后,提示导出成功,MySQL数据导出到Excel表。
如何从web页面导入excel单元格数据、又如何把查询出来的数据放到web页面上显示成客户需要的图表?并且导出到excel中?有两种方案:
1用Excel自动化技术。
引用Excel的类型库生成Net的包装类。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后,用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格,然后连接数据库保存。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用ResponseOutputStream输出到页面上,触发excel文件的下载保存框。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载 *** 作
有人会说,显示数据时可以用网页直接显示,不用导出成excel。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了。
2用微软Office中间件——SOAOffice。(建议使用最新版的)
用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存。SOAOffice提供标准C#Net组件,组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的。组件的属性方法都比较简单,易于调用,你完全不用去掌握复杂的VBA调用。
由于是纯Net组件,所以服务器端不需安装office。 SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必先下载再打开观看内容。
举个导出excel的例子:
SOAOfficeXExcelResponse SOAExcel = new SOAOfficeXExcelResponse();
SOAOfficeXExcelResSheet sheet1 = SOAExcelopenSheet("Sheet1"); // 打开一个Sheet
sheet1openCell("D"+StringvalueOf(8+i))setValue(rsgetString("Count")); //循环填充数据。
SOAOfficeXSOAOfficeCtrl SOACtrl = new SOAOfficeXSOAOfficeCtrl(response);
SOACtrlassign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrlwebOpen("doc/testxls", 1, UserName, "ExcelSheet");
上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。
读取excel单元格的代码也很简单:
SOAOfficeXExcelRequest SOAExcel = new SOAOfficeXExcelRequest();
SOAOfficeXIExcelReqSheet sheetOrder = SOAExcelOpenSheet("销售订单");
SOAOfficeXIExcelReqCell cell1;
cell1 = sheetOrderOpenCell("I5");//订单编码
string sOrderNum = cell1Value;//cell1Value就是读取的结果
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)