如果使用的XSSFWorkbook創建的xls,打開的時候會有這樣的提示:
這樣 XSSFWorkbook 和HSSFWorkbook的區別。
-
HSSF - 提供讀寫Microsoft Excel XLS格式檔案的功能。
-
XSSF - 提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能。
-
HWPF - 提供讀寫Microsoft Word DOC97格式檔案的功能。
-
XWPF - 提供讀寫Microsoft Word DOC2003格式檔案的功能。
-
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 { 11 public 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 }
報錯是因為,微軟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 { 11 public static void main(String[] args) { 12 //可以表示xls和xlsx格式文件的類 13 XSSFWorkbook workbook = new XSSFWorkbook(); 14 try { 15 //新創建的xls需要新創建新的工作簿,offine默認創建的時候會默認生成三個sheet 16 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 }