关于 java poi 导出excel时 导出多个sheet的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 java poi 导出excel时 导出多个sheet的问题相关的知识,希望对你有一定的参考价值。
如题,是这样的,在导出excel时候我需要导出多个sheet页,可是我的后面sheet页会覆盖前面sheet页的内容~!!比如导出7个sheet ~原本每一个sheet页内容应该不一样但是现在是跟第七个一模一样~~
我是这么写的代码
HSSFWorkbook workbook = null;
workbook=new HSSFWorkbook();
for()
//没有现成的文件需要重新计算
HSSFSheet sheet_sin =workbook.createSheet(month_query1);
sheet_sin= makeJDL(year_query,month_query1,sheet_sin,workbook);
就这个结构 求高手看看有什么问题~~
HSSFSheet sheet_sin =workbook.createSheet(month_query1);是创建不同的sheet页,怪我没写清楚 month_query1是个变量的 不是固定的 所以每次想当于创建一个新的sheet 事实上我也导出了这些sheet名字也不同 但是 内容却是和最后一个一样~
参考技术A 你写的上面这些代码应该都没问题。问题可能出在:
从数据库导出数据的话,sql语句是不是要换一下。比如:
select top 50000 * from 表名 where id not in(select top "+50000*i+" id from 表名)
50000代表每个sheet放5w条记录;
i是你for循环里面定义的int变量。 参考技术B createSheet(month_query1)
参数 month_query1 这个是名称,每个Sheet的,都要不同追问
这个是传递过来的参数 是不同的~~
参考技术C 楼主你问题解决了吗?我这边项目情况也是这样,循环createSheet(),但是在第三张sheet后就开始被后面的sheet数据覆盖,代码调试正常。createSheet()是用for循环去调模板的indexJava 利用poi 导出excel表格 如何在导出时自由选择路径?
能导出成功,知识代码把路径写死了,想要实现自己选择保存路径。
导出时自由选择路径的代码如下:
1、后台输出Excel文件代码:
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + path);
response.setContentType("Content-Type:application/vnd.ms-excel ");
wb.write(output);
output.close();
2、前端代码:
window.open("getExcelList","_blank");
导出excel数据
* @param id
* @param m
* @return
*/
@RequestMapping("/exportExcel")
public void exportExcel(@RequestParam("id") Integer id, Model m,HttpServletRequest req, HttpServletResponse resp)
try
ExportExcel<P2pLoanPlanVo> ex = new ExportExcel<P2pLoanPlanVo>();
String[] headers = "最迟还款日", "还款金额","剩余几天","逾期几天", "罚息","是否垫付","状态","是否发放收益";
List<P2pLoanPlanVo> dataset = new ArrayList<P2pLoanPlanVo>();
List<P2pLoanPlan> plans = this.planService.getListByLoan(id);
for (int i = 0; i < plans.size(); i++)
P2pLoanPlanVo p2pLoanPlanVo = new P2pLoanPlanVo();
p2pLoanPlanVo.setRepayDate(plans.get(i).getRepayDate());
p2pLoanPlanVo.setRepayAmount(plans.get(i).getRepayAmount());
if(plans.get(i).getRepayDays() >= 0 && plans.get(i).getStatus() == 0)
p2pLoanPlanVo.setRepayDays(plans.get(i).getRepayDays());
else
p2pLoanPlanVo.setRepayDays(0);
if(plans.get(i).getRepayDays() < 0 && plans.get(i).getStatus() == 0)
p2pLoanPlanVo.setRepayYqDays(-plans.get(i).getRepayDays());
else
p2pLoanPlanVo.setRepayYqDays(0);
参考技术A 主要代码如下:后台输出Excel文件代码:
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + path);
response.setContentType("Content-Type:application/vnd.ms-excel ");
wb.write(output);
output.close();
前端代码:window.open("getExcelList","_blank"); 参考技术B 做个临时文件,在重定向到这个临时文件,浏览器就会选择下载追问
我不明白,没学这个多久,望耐心解释~十分感谢~
追答在servlet中,
//把上边的改成try
wb.write(response.getOutputStream());
参考技术C 可以用pageoffice导出excel. pageoffice 调用的是本地的office,导出excel可以弹出另存的对话框,用户可以选择自己想要的位置进行保存.
以上是关于关于 java poi 导出excel时 导出多个sheet的问题的主要内容,如果未能解决你的问题,请参考以下文章