一、hssfworkbook和xssfworkbook
Apache POI提供了两种类型的工作簿:hssfworkbook和xssfworkbook。其中,hssfworkbook适用于较小的数据量,而xssfworkbook适用于大数据量。此外,它们的文件类型分别为.xls和.xlsx。
使用hssfworkbook时,要导入以下类:org.apache.poi.hssf.usermodel.HSSFWorkbook。使用xssfworkbook时,要导入以下类:org.apache.poi.xssf.usermodel.XSSFWorkbook。
// 使用hssfworkbook创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 使用xssfworkbook创建工作簿 XSSFWorkbook workbook = new XSSFWorkbook();
二、hssfworkbook内存溢出
由于hssfworkbook适用于小数据量,当数据量过大时,可能会出现内存溢出的情况。此时应该设置JVM堆内存的大小,增大堆内存可避免出现内存溢出的情况。
// 设置JVM堆内存的大小为1.5GB -Xmx1500m
三、hssfworkbook.write()
hssfworkbook.write()方法用于将工作簿写入到输出流中,从而生成Excel文件。需要注意的是,该方法要抛出IOException异常。
// 文件输出流 FileOutputStream fileOut = new FileOutputStream("workbook.xls"); // 将工作簿写入输出流中 workbook.write(fileOut); // 关闭输出流 fileOut.close();
四、xssfworkbook 读取慢
xssfworkbook适用于大数据量,读取速度会比较慢。若要提高读取速度,可以使用SAX事件模型或XSSFReader。
五、Workbook导出Excel
使用Workbook可以导出Excel文件。若要导出.xls文件,需要导入以下类:org.apache.poi.hssf.usermodel.HSSFWorkbook。
若要导出.xlsx文件,需要导入以下类:org.apache.poi.xssf.usermodel.XSSFWorkbook。
// Excel文件 File excelFile = new File("workbook.xls"); // 创建工作簿 Workbook workbook = new HSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("工作表"); // 设置单元格的值 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello World"); // 输出流 OutputStream os = new FileOutputStream(excelFile); // 将工作簿写入输出流中 workbook.write(os); // 关闭输出流 os.close();