POI-Excel

Author Avatar
丁起男 02月 03,2021
  • 在其它设备中阅读本文章

POI-Excel

apache poi - the java api for microsoft documents,顾名思义,apache的三方包,用来操作微软office文档的

poi的组件列表中,针对excel的主要是HSSF和XSSF组件,前者针对97-2007的通用版excel,即后缀xls;后者针对2007或更高版的excel,即后缀xlsx

核心类

工作簿 workbook

创建或维护excel工作簿的所有类的超接口,Workbook,属于org.apache.poi.ss.usermodel包,其下有两个实现类:

  • HSSFWorkbook:有读取.xls格式和写入microsoft excel文件的方法。它与微软office07-2003版本兼容
  • XSSFWorkbook:有读写microsoft excel和OpenOffice的xml文件的格式.xls或.xlsx的方法。它与MS-Office版本2007或更高版本兼容

所以针对不同版本的excel时,需要对应以上使用的不同Workbook

构造函数:

HSSFWorkbook

//直接创建
HSSFWorkbook()
//通过输入流创建
HSSFWorkbook(InputStream is)

XSSFWorkbook

//直接创建
XSSFWorkbook()
//通过file创建
XSSFWorkbook(File file)
//通过输入流创建
XSSFWorkbook(InputStream is)

标签页 Sheet

HSSFSheet和XSSFSheet都是Sheet接口的实现类,Sheet可以使用Workbook的两个方法获得:

workbook.createSheet();
workbook.createSheet(String sheetName);

行 Row

Row是HSSFRow和XSSFRow的接口,通过Sheet获取:

sheet.createRow(int rownum);

单元格 Cell

Cell是HSSFCell和XSSFCell的接口,通过Row获取:

row.createCell(int column);
row.createCell(int column,int type);

实例

依赖

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
</dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

创建空白excel

XSSFWorkbook workbook = new XSSFWorkbook();
        OutputStream os = new FileOutputStream(new File("H:\\testDemo\\aaa.xlsx"));
        workbook.write(os);
        os.close();

获取表中数据

InputStream is = new FileInputStream("H:\\testDemo\\aaa.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(is);
        XSSFSheet sheet = workbook.getSheetAt(0);
        XSSFRow row = sheet.getRow(0);
        XSSFCell cell = row.getCell(0);

        System.out.println(cell.getStringCellValue());

创建并填充excel

XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("aaa");
        for (int i=0; i<10; i++){
            XSSFRow row = sheet.createRow(i);
            for (int j=0; j<10; j++){
                XSSFCell cell = row.createCell(j);
                cell.setCellValue(i+":"+j);
            }
        }
        FileOutputStream fos = new FileOutputStream("H:\\testDemo\\bbb.xlsx");
        workbook.write(fos);

        fos.close();

原文:https://mp.weixin.qq.com/s/d70nGHqmBr0T-9LapKdkdQ