把jsp 页面原样下载到客户端的一个excel文件中 5
展开全部
你的jsp页面是不是显示了从数据库查询得到的表格,现在想把表格导出到客户端的excel文件里?
首先说说现在Java编辑Excel文件的两大开源工具:jakarta poi和JavaExcelAPI(简称JXL),这两套工具我都试用了一这段时间,感觉各有优劣吧。poi在某些细节有些小Bug并且不支持写入图片,对中文的支持不行;JXL就惨了,除了支持写入图片外,我暂时看不到它比POI好的地方,我碰到的主要的问题就是对公式支持不是很好,很多带有公式的Excel文件用JXL打开后,公式就丢失了(比如now(),today()),在网上看到其他大虾评论说JXL写入公式也有问题,另外,JXL操作Excel文件的效率比POI低一点。
poi和jxl都是直接分析excel文件格式进行操作的,最大的缺点是对excel的各种特性和格式不能全面支持,也总是不支持最新版的excel(总有一个研发滞后期)。
还有使用Jacob的方案,jacob使用的是com技术,对excel进行COM自动化调用,缺点是服务器端必须安装excel,而且web的并发访问经常会令自动化隐藏运行的excel进程死掉。unix等操作系统无法安装ms office。
现在有一个最佳的解决方案,就是采用SOAExcel技术。SOAExcel是SOAOffice中的一个专门负责Excel读写的纯Java组件。
由于是纯Java组件,所以服务器端不需安装office。 SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必下载再打开观看内容。由于SOAExcel是自动化客户端安装的excel进行工作的,所以不存在poi和jxl对excel版本格式支持的问题,也不存在jacob服务器端自动化问题。
举个例子:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheet
sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据。
SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response);
SOACtrl.assign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet");
Excel文件不但动态填充生成,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。
用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,而且还能在浏览器里直接浏览excel、或者下载、另存
首先说说现在Java编辑Excel文件的两大开源工具:jakarta poi和JavaExcelAPI(简称JXL),这两套工具我都试用了一这段时间,感觉各有优劣吧。poi在某些细节有些小Bug并且不支持写入图片,对中文的支持不行;JXL就惨了,除了支持写入图片外,我暂时看不到它比POI好的地方,我碰到的主要的问题就是对公式支持不是很好,很多带有公式的Excel文件用JXL打开后,公式就丢失了(比如now(),today()),在网上看到其他大虾评论说JXL写入公式也有问题,另外,JXL操作Excel文件的效率比POI低一点。
poi和jxl都是直接分析excel文件格式进行操作的,最大的缺点是对excel的各种特性和格式不能全面支持,也总是不支持最新版的excel(总有一个研发滞后期)。
还有使用Jacob的方案,jacob使用的是com技术,对excel进行COM自动化调用,缺点是服务器端必须安装excel,而且web的并发访问经常会令自动化隐藏运行的excel进程死掉。unix等操作系统无法安装ms office。
现在有一个最佳的解决方案,就是采用SOAExcel技术。SOAExcel是SOAOffice中的一个专门负责Excel读写的纯Java组件。
由于是纯Java组件,所以服务器端不需安装office。 SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必下载再打开观看内容。由于SOAExcel是自动化客户端安装的excel进行工作的,所以不存在poi和jxl对excel版本格式支持的问题,也不存在jacob服务器端自动化问题。
举个例子:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheet
sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据。
SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response);
SOACtrl.assign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet");
Excel文件不但动态填充生成,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。
用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,而且还能在浏览器里直接浏览excel、或者下载、另存
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询