java生成Excel方法

    科技2025-07-18  5

    一、引入对应的包

    <!-- poi读写Excel工具类 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.1</version> </dependency>

    二、具体实现

    Excel信息实体类

    public class student { private String name; private Integer age; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Object[] toObject(){ Object[] obj = {name,age,address}; return obj; } }

    生成Excel具体实现

    public void exportFindPageBill(List<student> students, HttpServletResponse response) throws IOException { String[] headers = {"姓名","年龄","住址"}; Workbook workbook= Exports(headers,students); OutputStream out = null; try { writeExcel("学生信息", response); out = response.getOutputStream(); workbook.write(out); } catch (IOException e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(workbook); IOUtils.closeQuietly(out); } } public Workbook Exports(String[] headers,List<student> data) { SXSSFWorkbook workbook = new SXSSFWorkbook(); SXSSFSheet sheet = workbook.createSheet(); // 新增数据行 int rowNum = 1; // 设置单元格样式 SXSSFRow row = sheet.createRow(0); row.setHeight((short) 800); for(int i=0;i<headers.length;i++){ SXSSFCell cell = row.createCell(i); XSSFRichTextString text = new XSSFRichTextString(headers[i]); cell.setCellValue(text); // cell.setCellStyle(headStyle); } //在表中存放查询到的数据放入对应的列 if(data!=null) { for(student da:data) { Object[] os=da.toObject(); SXSSFRow row1 = sheet.createRow(rowNum); row1.setHeight((short) 400); for(int j = 0;j<os.length;j++) { SXSSFCell cell = row1.createCell(j); cell.setCellValue(os[j].toString()); //cell.setCellStyle(cellStyle); } rowNum++; } } return workbook; } /** * Excel写入响应输出流 * @param title 标题 * @param response 响应 */ public static void writeExcel(String title, HttpServletResponse response) throws IOException { StringBuffer filename = new StringBuffer(); filename.append(title); filename.append("-"); filename.append(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); filename.append(".xlsx"); try { response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=" + new String(filename.toString().getBytes("UTF-8"), "ISO8859-1")); } catch (IOException e) { e.printStackTrace(); } }

     

    Processed: 0.013, SQL: 8