POI操作excel简单说明

POI简单使用说明

1 依赖关系

        
            org.apache.poi
            poi
            3.17
        
        
            org.apache.poi
            poi-ooxml
            3.16
        

2 主要操作对象

WorkBook : excel文件
Sheet : excel的sheet
Row : sheet里的一行
cell:row里的单元格

POI对于2007以前的版本有一套类,2007以后有一套类,这两套类区别在于首字母一个是X,一个是H,但均实现了上面的对应的接口,所以可以统一操作,无需关注这些细节。

3 上例子

 public static void main(String[] args) throws Exception {
        String filePath = "e:/test.xlsx";
        Workbook book = new XSSFWorkbook();

   // 写数据到excel
        Sheet sheet = book.createSheet("poi测试demo");
        int totalRow = sheet.getPhysicalNumberOfRows();
        Row row = sheet.createRow(totalRow);
        row.createCell(0).setCellValue("序号");
        row.createCell(1).setCellValue("姓名");
        row.createCell(2).setCellValue("性别");
        row.createCell(3).setCellValue("多年以后,面对行刑队,奥里雷亚诺.布恩迪亚上校将会回想起父亲带他去见识冰块的那个遥远的下午");
        row.createCell(4).setCellValue(4);
           
        //中文自适应宽度
        int length = row.getCell(3).getStringCellValue().getBytes("UTF-8").length * 256;
        sheet.setColumnWidth(3,length);


        FileOutputStream fos = new FileOutputStream(filePath);
        book.write(fos);
        book.close();
        fos.close();




        BufferedInputStream ins = new BufferedInputStream(new FileInputStream(filePath));

        Workbook readBook = WorkbookFactory.create(ins);
//从excel读数据
        sheet = readBook.getSheetAt(0);
        row = sheet.getRow(0);
        String value = row.getCell(3).getStringCellValue();
        System.err.println(value);
        readBook.close();

    }

需要注意是
使用Workbook readBook = WorkbookFactory.create(ins); 这句可以屏蔽xls与xlsx的差异,统一使用Workbook来操作。
中文自适应宽度需要注意下,需要手动设置其宽度,设置cell宽度自适应只对英文有效。
列宽度的操作应该在所以数据填写完毕后完成,否则会有性能损失。

你可能感兴趣的