excel
原生POI
注意点
- sheet.getRow(i); i:索引,从0开始
- row.getCell(i);i:索引,从0开始
- sheet.getLastRowNum(); 返回最后一行的索引值。
- 合并单元格:wb.getSheetAt(0).addMergedRegion(new CellRangeAddress(4,8,0,0));
合并单元格语法: 开始行、结束行、开始列、结束列,都是(0开始)
easypoi
模板导出
ExcelUtil
点击查看代码
public static String getTempletFilePath(HttpServletRequest request,String fileName){
return request.getSession().getServletContext().getRealPath("/")
+ File.separator + "exporttemp" +File.separator+fileName;
}
public static void responseHeader(HttpServletResponse response, String fileName) throws UnsupportedEncodingException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
fileName = URLEncoder.encode(fileName+".xls", "utf-8");
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
}
controller
点击查看代码
@RequestMapping("/export")
@ResponseBody
public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
substationTripService.export(request,getLoginUser(),response);
} catch (Exception e) {
e.printStackTrace();
logger.error("导出牵引跳闸记录异常", e.getMessage());
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().println("导出失败,系统内部错误!");
}
}
service
点击查看代码
public void export(HttpServletRequest request, LoginUser loginUser, HttpServletResponse response) throws Exception {
Map<String, Object> params = WebUtils.getParametersStartingWith(request, "");
String filePath = ExcelUtil.getTempletFilePath(request, "qianyingtiaozha.xls");
Page<SubstationTrip> page = findPage(1, 65530, params, loginUser);
TemplateExportParams templateExportParams = new TemplateExportParams(filePath);
Map<String, Object> map = new HashMap();
List<SubstationTrip> list = fmtList(page);
map.put("list", list);
Workbook wb = ExcelExportUtil.exportExcel(templateExportParams, map);
if (wb == null) {
throw new Exception("error");
}
response.reset();
ExcelUtil.responseHeader(response,"牵引跳闸记录");
try {
OutputStream os = response.getOutputStream();
BufferedOutputStream bo = new BufferedOutputStream(os);
wb.write(bo);
bo.flush();
bo.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?