【poi xlsx报错】使用POI创建xlsx无法打开

简介: 如果使用的XSSFWorkbook创建的xls,打开的时候会有这样的提示:   这样 XSSFWorkbook 和HSSFWorkbook的区别。   HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

如果使用的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

 

相关文章
|
17天前
|
easyexcel 数据库
EasyExcel实现多Sheet导出
EasyExcel实现多Sheet导出
21 0
|
17天前
|
数据库
关于用NPOI导入Excel
关于用NPOI导入Excel
|
4月前
|
索引
POI(excel)中WorkBook和Sheet应用实践总结
POI(excel)中WorkBook和Sheet应用实践总结
68 1
|
8月前
|
easyexcel Java
EasyExcel实现Excel文件多sheet导入导出
EasyExcel实现Excel文件多sheet导入导出
643 0
|
Java API
操作Excel,除了使用POI你还会其他的?
操作Excel,除了使用POI你还会其他的?
297 0
操作Excel,除了使用POI你还会其他的?
|
Apache 数据库
使用Apache POI 实现导出数据到Excel 并下载到本地
使用Apache POI 实现导出数据到Excel 并下载到本地
394 0
|
容器
POI创建Excel使用的常见的属性
public static void main(String[] args) { //创建新的Excel 工作簿 HSSFWorkbook workbook =new HSSFWorkbook(); //在Excel工作簿中建一工作表...
1091 0
|
Java Apache
【POI xls】解析xls遇到的问题
问题1:Package should contain a content type part   1 org.apache.poi.POIXMLException: org.apache.poi.
1247 0