Excel导出功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hehyyoulan/article/details/88413697

Excel导出功能实现 https://blog.csdn.net/evangel_z/article/details/7332535#commentBox

poi的api文档

https://poi.apache.org/apidocs/index.html

问题

问:后台报错为:Unable to read entire header; 0 bytes read; expected 512 bytes
答:是否是文件过小,或重复操作。HeaderBlock构造函数需抓取前512个字节
问:博主为什么我复制设置字体那段相关代码到我的类中时提示很多方法都过时了啊
答:可能版本不同,设置字体我这边没过期,进源码或api查下吧。 类似HSSFCell createCell(short columnIndex)这类过期方法,
可以用HSSFCell createCell(int column)等替代
答:一开始还没明白下面的用servlet写是什么意思,后面知道了,一个是下载数据,一个是下载模板
问:问我要把一个主页面的数据和一个子页面的数据导出到一个excel里面该咋解决
答:可以试试多个sheet,http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java
或在官网例子中找找合适的,http://poi.apache.org/spreadsheet/examples.html
问:如何去除预下载E://a.xls, 如果客户端是ios系统或者linux并没有E盘怎么办?
参考源代码中的ExcelServlet试试,https://github.com/T5750/poi/blob/master/src/testExport/ExcelServlet.java
问:怎么实现自定义的下载路径和下载文件名字
答:可以通过ExcelServlet类download方法中的path实现
问:请问一下,如果导出的excel中要求有的列是下拉框数据,应该怎么做?调用哪几个函数方法?
答:CellRangeAddressList regions = new CellRangeAddressList(0,0,0,0)//生成下拉列表,只对(0,0)单元格有效
DVConstraint constraint = DVConstraint.createExplicitListConstraint(list);//生成下拉框内容  
HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint);//绑定下拉框和作用区域
sheet.addValidationData(data_validation);//对sheet页生效 不用谢的
问:我使用不弹出下载框的写法,能够正常导出excel,但是使用弹出下载框的写法,excel不能导出,并且浏览器也未弹出下载框。我前端使用的ajax发起的请求,请问如果使用ajax就不能弹出下载框吗?
答:用最新代码先试试excel能否导出;其次浏览器设置,比如在chrome设置中,勾选“下载前询问每个文件的保存位置”;ajax不影响的
问:我这里有做好的excel模板封面 在一次勾选多条数据时生成的多个封面需要在一个文件中以多页的形式实现(目前我是用替换的方法将模板中的数据替换掉) 应该怎么做 ?
答:可以参照最新代码中读取模版替换单元格内容的方式,参考TestExcelReplace.java这个类
问:

MySQL可以参照https://github.com/T5750/maven-archetype-templates/tree/master/SpringMvc4MyBatis3Annotation

源码: https://github.com/T5750/poi/archive/master.zip
参照源码,可以根据需要改为freemarker, thymeleaf, velocity等
jsp页面实现Excel模板下载 https://codeload.github.com/T5750/poi/zip/master
用插件也可以实现,pageoffice插件就是处理excel word文件,可以实现文件导入导出。

猜你喜欢

转载自blog.csdn.net/hehyyoulan/article/details/88413697