使用POI导出Excel时,涉及到如何自适应列宽的问题。方法如下
/** * 下载excel文件,内容使用MAP存放 * * @param response * @param headName * @param tableHead * @param tableBody * @throws IOException */ public static void downloadExcelMap(HttpServletResponse response, String headName, List<String> tableHead, List<Map<Object, Object>> tableBody) throws IOException { headName=StringUtils.replaceAllSpecial(headName); // 1:创建一个workbook HSSFWorkbook workbook = new HSSFWorkbook(); // 创建样式 HSSFCellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); // 粗体 style.setFont(font); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中 style.setBorderTop((short) 1); style.setBorderBottom((short) 1); style.setBorderLeft((short) 1); style.setBorderRight((short) 1); style.setWrapText(true); // 设置合计样式 HSSFCellStyle style1 = workbook.createCellStyle(); style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中 style1.setBorderTop((short) 1); style1.setBorderBottom((short) 1); style1.setBorderLeft((short) 1); style1.setBorderRight((short) 1); style.setWrapText(true); HSSFSheet sheet = (HSSFSheet) workbook.createSheet(headName); // 2:合并单元格,表头。并设置值 CellRangeAddress cra = new CellRangeAddress(0, 0, 0, tableHead.size() - 1); sheet.addMergedRegion(cra); HSSFRow row = sheet.createRow(0); HSSFCell tableName = row.createCell(0); tableName.setCellStyle(style); tableName.setCellValue(headName); //存储最大列宽 Map<Integer,Integer> maxWidth = new HashMap<Integer,Integer>(); // 3:设置表head HSSFRow row1 = sheet.createRow(1); for (int i = 0; i < tableHead.size(); i++) { Cell createCell = row1.createCell(i); createCell.setCellValue(tableHead.get(i)); createCell.setCellStyle(style); maxWidth.put(i,createCell.getStringCellValue().getBytes().length * 256 + 200); } // 4:表格内容 for (int i = 0; i < tableBody.size(); i++) { HSSFRow rows = sheet.createRow(i + 2); int j = 0; for (Map.Entry<Object, Object> entry : tableBody.get(i).entrySet()) { HSSFCell createCell = rows.createCell(j); if(PropertyUtil.objectNotEmpty(entry.getValue())){ createCell.setCellValue(entry.getValue().toString()); }else{ createCell.setCellValue(""); } int length = createCell.getStringCellValue().getBytes().length * 256 + 200; //这里把宽度最大限制到15000 if (length>15000){ length = 15000; } maxWidth.put(j,Math.max(length,maxWidth.get(j))); j++; createCell.setCellStyle(style1); } } // 列宽自适应 for (int i = 0; i < tableHead.size(); i++) { sheet.setColumnWidth(i,maxWidth.get(i)); } // 5:设置头 response.setHeader("Content-disposition", "attachment; filename=" + new String(headName.getBytes("GB2312"), "ISO8859-1") + ".xls"); // 6:设置头类型 response.setContentType("application/vnd.ms-excel"); // 7:写出 OutputStream toClient = response.getOutputStream(); workbook.write(toClient); toClient.flush(); toClient.close(); }
注意:以上代码有15000的限制,原因是Excel限制最大宽度为15000。所以,在这里我们除了这个宽度处理外,还需要设置单元格自动换行
style.setWrapText(true);
相关推荐
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....
在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了一系列的 API,用于处理 Microsoft Office 文件...
本文将详细介绍如何使用Apache POI实现Excel的导出功能,并在此基础上实现自动换行。 #### 一、Apache POI简介 Apache POI是一个流行的Java库,用于创建和维护Microsoft Office文档。它包括对Word(DOCX),Excel...
java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
本文将深入探讨如何使用POI库来实现Excel文件的导出,以及如何将图片URL转换为图片文件并与其他文件一起打包成压缩包。 首先,让我们了解一下Apache POI。POI是Java开发者的开源API,它允许程序创建、修改和显示...
总结来说,"poi-excel-handler" 是一个使用 Apache POI 实现的工具,它提供了根据模板导出和简单列表导出 Excel 的功能。通过利用 POI 的 API,它能够有效地处理大量数据,同时保持代码的可读性。在实际项目中,这样...
在上面的代码中,我们可以看到使用POI导出Excel文档的方法。首先,我们需要创建一个Workbook对象,然后使用Workbook对象创建一个Sheet对象。接着,我们可以使用Sheet对象将数据写入Excel文档中。最后,我们可以使用...
poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列
本教程将详细介绍如何利用Apache POI库来实现使用多个Sheet(工作簿)导出一个Excel文件的功能。 一、Apache POI简介 Apache POI 是一个开源项目,提供API来读取、写入和修改Microsoft Office文件格式,如Word(DOC...
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
下面将详细介绍如何使用Java POI来实现Excel的导出。 1. **引入依赖** 在Java项目中使用POI,首先需要在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加对应的依赖。对于Maven用户,可以在pom....
在本示例中,我们将探讨如何使用Apache POI库从数据库导出数据到Excel表格,这在数据分析、报告生成或批量数据处理场景中非常常见。Apache POI是一个开源项目,它允许Java开发者创建、修改和显示Microsoft Office...
Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi-ooxml-schemas**: 包含了与Office Open XML(OOXML)格式相关的XML架构定义,是处理OOXML文档格式...
本篇文章将深入讲解如何使用POI库在Java中实现Excel的导出功能,以及涉及到的相关jar包及其作用。 首先,`poi-ooxml-schemas-3.15-beta1.jar`是POI库中的XML schema定义,用于解析和创建符合Office Open XML标准的...
POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)