如果使用的XSSFWorkbook创建的xls,打开的时候会有这样的提示:
这样 XSSFWorkbook和HSSFWorkbook的区别。
HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF - 提供读写Microsoft Word DOC97格式档案的功能。
XWPF- 提供读写Microsoft Word DOC格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
HSMF - 提供读Microsoft Outlook格式档案的功能。
使用POI创建一个新的xlsx,提示创建成功,但是打开xlsx文件的时候,会报错打不开
代码如下:
1 package com.it.poiTest; 2 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 7 import org.apache.poi.ss.usermodel.Sheet; 8 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 9 10 public class CreateWorkBook {11public static void main(String[] args) {12 //可以表示xls和xlsx格式文件的类13 XSSFWorkbook workbook = new XSSFWorkbook();14 try {15 FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");16 workbook.write(out);17 out.close();18 System.out.println("createWorkBook success");19 } catch (FileNotFoundException e) {20 e.printStackTrace();21 } catch (IOException e) {22 e.printStackTrace();23 }24 25 26}27 }
View Code
报错是因为,微软offine自己创建一个新的xlsx的时候,会默认的创建三个新的sheet,工作簿.而我们使用程序创建的xlsx默认不会,因此需要我们自己新建的时候,也创建一个sheet,这样就不会错了。
代码改良如下:
1 package com.it.poiTest; 2 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 7 import org.apache.poi.ss.usermodel.Sheet; 8 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 9 10 public class CreateWorkBook {11public static void main(String[] args) {12 //可以表示xls和xlsx格式文件的类13 XSSFWorkbook workbook = new XSSFWorkbook();14 try {15 //新创建的xls需要新创建新的工作簿,offine默认创建的时候会默认生成三个sheet16 Sheet sheet = workbook.createSheet("first sheet");17 FileOutputStream out = new FileOutputStream("createWorkBook.xlsx");18 workbook.write(out);19 out.close();20 System.out.println("createWorkBook success");21 } catch (FileNotFoundException e) {22 e.printStackTrace();23 } catch (IOException e) {24 e.printStackTrace();25 }26 27 28}29 }
View Code