【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

 

时间: 2024-09-11 10:21:25

【poi xlsx报错】使用POI创建xlsx无法打开的相关文章

struts2 0-java poi getInpuStream报错

问题描述 java poi getInpuStream报错 是这样的,我写了重载了两个getInputStream方法,当调用不带参数的方法时,运行正常,当调用带参的方法则报 Can not find a java.io.InputStream with the name [inputStream] in the invocation stack的错误 代码如下: Struts2配置: <action name="ajaxUserDataExportAction" class=&

maven创建项目报错-Maven创建项目报错,archetype:create创建报错

问题描述 Maven创建项目报错,archetype:create创建报错 使用mvn archetype:create创建maven的web项目报错. mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 各位大神们看看什么问题呀! 然而使用mvn archetype:g

.net连接SQLSERVER数据库,网页上不停的刷新就报错&amp;amp;quot;ExecuteScalar 要求已打开且可用的连接。连接的当前状态为打开。&amp;amp;quot;

问题描述 .net连接SQLSERVER数据库,网页上定时刷新就报错"ExecuteScalar要求已打开且可用的连接.连接的当前状态为打开."实在找不出问题出在哪了,请大家帮帮忙吧"/Web"应用程序中的服务器错误.--------------------------------------------------------------------------------ExecuteScalar要求已打开且可用的连接.连接的当前状态为打开.说明:执行当前Web

[问题]使用Vs2008编译带iomapip的库文件,报错:fatal error C1083: 无法打开包括文件:“iomapip”: No such fil

问题描述 如题,这是log打出的错误:正在编译...Ex02_03.cppc:userszilongdocumentsvisualstudio2008projectsvc2005rmjdex02_03ex02_03.cpp(2):fatalerrorC1083:无法打开包括文件:"iomapip":Nosuchfileordirectory在网上搜了许久,没有得到解决,请指点迷经. 解决方案 解决方案二:太晕了,我在另一台机器上VS2005就没有问题,难道是软件的安装问题吗?不解

Windows 10报错无法使用内置管理员账户打开浏览器解决办法

这个问题的原因在于Windows应用开启默认需要用户账户控制UAC支持(在普通账户下关闭UAC通知不影响此类应用运行),而Win10管理员账户不开启UAC.因此在Administrator账户下默认不能运行Windows应用. 出现这个问题我们是需要把administrar给打开了,所以我们接着微下看看解决办法. 修改方法如下: 1.我们打开"Cortana"然后搜索"regedit"找到后我们双击 2.在注册表编辑器中定位到以下位置: HKEY_LOCAL_MAC

myeclipse工程名报错的问题

问题描述 myeclipse工程名报错的问题 为什么myeclipse里面的类里面写的内容没报错,但工程却报错了,急急急,强迫症又犯了 解决方案 错误是什么?贴出来看看啊 解决方案二: 报什么错,看下异常信息 解决方案三: myeclipse导入工程报错问题myeclipse创建maven工程报错解决myeclipse创建maven工程报错解决 解决方案四: 程序也能正常运行是吧.只是工程包报个红叉...不影响程序运行 的 解决方案五: 你重新保存一下,或者clean一下啊. 然后看看错误信息提

分页-grid里面的stroe报错,求解决

问题描述 grid里面的stroe报错,求解决 如图!我要获取前台分页,然后我stroe报错了,我知道这个store没有定义的原因!但是我用var定义也报错啊!我的思路是应该是要获取grid里面的store,但是我不知道怎么获取啊!而且大家注意了,我的这个stroe是写在grid里面的,所以我var store = Ext.create('Ext.data.Store', {}会报错啊!一定是我打开的方式不对,求大伙告诉!谢谢啦 解决方案 http://zhidao.baidu.com/link

为什么XML规范中说元素标记名不能用xml字符开头,但是我用xml字符开头也不报错?

问题描述 为什么XML规范中说元素标记名不能用xml字符开头,但是我用xml字符开头也不报错? 为什么XML规范中说元素标记名不能用xml字符开头,但是我用xml字符开头也不报错?比如:为什么浏览器打开不报错? 解决方案 没有这个规定啊.可以用xml开头作为标签 解决方案二: 可能是为了数据兼容什么增加的规范吧.浏览器支持就行,就如你加了xhtml申明,一些不支持的标签你html页面有浏览器还是会支持.标签不闭合也不会报错显示不友好什么的

使用AjaxControlToolkit中的 autocomplete控件报错

问题描述 "/"应用程序中的服务器错误.未能加载文件或程序集"AjaxMin,Version=4.97.4951.28478,Culture=neutral,PublicKeyToken=21ef50ce11b5d80f"或它的某一个依赖项.系统找不到指定的文件.说明:执行当前Web请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.IO.FileNotFoundException:未能加