package com.yuxinglab.poi.test; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; /** * Excel模版类 提供Excel模版文件,找到"datas"所在位置,以此作为数据插入位置 * * @author yuxing * */ public class ExcelTemplate { private static ExcelTemplate excelTemplate = new ExcelTemplate(); private Workbook workbook; private int initColIndex; // 数据的初始化列数 private int initRowIndex; // 数据的初始化行数 private int curColIndex; // 数据当前列数 private int curRowIndex; // 数据当前行数 private Row curRow; // 当前行 private Sheet sheet; private ExcelTemplate() { } public static ExcelTemplate getInstance() { return excelTemplate; } public final static String DATA_BEGIN = "datas"; // 读取模版 public ExcelTemplate readExcelTemplateFromClassPath(String path) { try { workbook = WorkbookFactory.create(ExcelTemplate.class .getResourceAsStream(path)); initTemplate(); } catch (InvalidFormatException e) { e.printStackTrace(); throw new RuntimeException("读取模版文件失败!请检查文件格式."); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("模版文件不存在!请检查."); } return this; } public ExcelTemplate readExcelTemplateFromPath(String path) { try { workbook = WorkbookFactory.create(new File(path)); initTemplate(); } catch (InvalidFormatException e) { e.printStackTrace(); throw new RuntimeException("读取模版文件失败!请检查文件格式."); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("模版文件不存在!请检查."); } return this; } private void initTemplate() { sheet = workbook.getSheetAt(0); initConfigData(); createRow(); } private void initConfigData() { boolean flag = false; for (Row row : sheet) { if (flag) { break; } for (Cell c : row) { if (c.getCellType() != c.CELL_TYPE_STRING) { continue; } String str = c.getStringCellValue().trim(); if (str.equals(DATA_BEGIN)) { initColIndex = c.getColumnIndex(); initRowIndex = row.getRowNum(); curColIndex = initColIndex; curRowIndex = initRowIndex; flag = true; break; } } } } public static void main(String[] args) { ExcelTemplate excelTemplate = getInstance().readExcelTemplateFromPath( "d:/template.xls"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createCell("111"); excelTemplate.createRow(); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createCell("222"); excelTemplate.createRow(); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createCell("333"); excelTemplate.createRow(); excelTemplate.writeToFile("d:/01.xls"); } public void createCell(String value) { curRow.createCell(curColIndex).setCellValue(value); curColIndex++; } public void createRow() { curRow = sheet.createRow(curRowIndex); curRowIndex++; curColIndex = initColIndex; } public void writeToFile(String filePath) { FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(filePath); workbook.write(fileOutputStream); } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException("写入的文件" + filePath + "不存在!"); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("写入数据失败:"+e.getMessage()); } finally { try { if (fileOutputStream != null) { fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } public void writeToStream(OutputStream outputStream) { try { workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("写入流失败:"+e.getMessage()); } } }
对于web应用,可以使用如下代码:
response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=file.xls"); OutputStream ouputStream = null; try { ouputStream = response.getOutputStream(); excelTemplate.writeToStream(ouputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { ouputStream.flush(); ouputStream.close(); } catch (IOException e) { e.printStackTrace(); } }
效果如下:
Excel最大行数65536!
注意jar包是否冲突!
相关推荐
本文将详细讲解如何实现一个自定义的动态导出Excel封装类,以满足各种不同的需求。 首先,我们要理解为什么要自定义封装Excel导出。通常,Java开发中可以使用Apache POI库或JExcelAPI等第三方库来操作Excel。这些库...
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
使用POI导出Excel文件** 导出Excel文件主要涉及以下几个步骤: - **创建Workbook对象**:这是Excel文件的容器,可以使用`XSSFWorkbook`(针对.xlsx)或`HSSFWorkbook`(针对.xls)创建。 - **创建Sheet对象**:...
在EasyUIPoI中,导出Excel的过程被封装成了一套简单的API。首先,你需要创建一个模板文件,定义好Excel的结构和样式,例如单元格的合并、字体、颜色等。模板文件可以使用Microsoft Excel来创建,保存为`.xlsx`格式,...
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
导出Excel文件: 1. **创建Workbook和Sheet**:首先,你需要创建一个新的Workbook实例,然后根据需求创建Sheet。 2. **添加Row和Cell**:在Sheet上添加Row,然后在Row中添加Cell。可以通过`Sheet.createRow(int ...
poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值), poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值) poi导出导入封装(使用注解建立实体与excel映射关系+反射设置...
总之,利用 Apache POI 实现多表头的 Excel 导出,需要理解 POI API,合理组织数据结构,以及灵活运用单元格合并和样式设置。结合提供的代码文件,你可以进一步研究和学习如何在实际项目中应用这些技术。
在本示例中,"poi导出excel demo"指的是使用Apache POI库创建和导出Excel文件的演示。这个项目可能包含了一个或多个Java源代码文件,展示了如何使用POI API来生成Excel工作簿、工作表、单元格等内容。 Apache POI ...
java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
通过上述步骤,你可以使用Apache POI结合Struts 2实现从Java Web应用中导出Excel报表的功能。这个过程涉及到了Java编程、面向对象设计、Web框架和文件处理等多个技术领域,对于Java开发者来说是一项非常实用的技能。
总结来说,使用ITEXT导出Excel虽然不是其主要功能,但通过创建模拟Excel结构的PDF文档并转换,可以实现这一目标。不过,这种方式可能不如直接使用Apache POI等专门的Excel处理库那么高效和灵活。在实际开发中,应...
在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...
自己封装的excel导出/导入,可以根据注解来导出excel.本项目一共有13个类,里面还包含了一个反射工具,一个编码工具,10分值了。下面是测试代码 public class Test { public static void main(String[] arg) throws ...
**导出Excel数据:** 1. **创建Workbook对象**:使用`WorkbookFactory.create()`或`new XSSFWorkbook()`(对于.xlsx)创建一个新的Excel文件。 2. **添加Sheet对象**:调用Workbook的`createSheet()`方法创建新的...
总的来说,Apache POI为Java开发者提供了一套强大的工具,可以方便地处理Excel文件,实现各种复杂的操作,包括创建和导出带有合并行和列的表头。对于大型企业或数据分析应用,这种能力尤为关键,因为它可以极大地...
在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...
标题中的"java导入导出excel需要poi包"指的是使用Apache POI库来实现Java程序对Excel文件的导入和导出功能。 Apache POI提供了丰富的API,使得开发者可以轻松地创建、修改和读取Excel文件。以下是使用POI进行Excel...
具体到"导出Excel"这个文件,可能是一个示例代码或者已经封装好的类库,包含了上述的一些功能实现。例如,它可能包含一个`exportToExcel()`方法,接收一个数据列表和列名数组,然后利用POI库创建一个新的Excel工作簿...
在实际项目中,为了简化POI的使用,通常会封装一些工具类或者服务,提供简单的接口供其他模块调用,如批量导入数据到Excel、导出特定格式的报表等。同时,需要注意的是,处理大量数据时,由于内存占用问题,可能需要...