【poi xlsx報錯】使用POI創建xlsx無法打開


如果使用的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 }
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 {
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 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM