700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【poi xlsx报错】使用POI创建xlsx无法打开

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

时间:2018-08-28 07:52:05

相关推荐

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。