首页 新闻 会员 周边

java 读取excel,并入库异常

0
悬赏园豆:140 [已解决问题] 解决于 2018-05-11 14:53

 

在windows下跑程序,没有任何问题,导入并入库成功,当把程序发布到linux服务器,然后页面d导入时,后天就报这个错,开发时没法重现异常,请高手指教

 

 

问题补充:

/**
* 根据excel里面的内容读取配置信息
* @param is 输入流
* @return 配置信息list
*/
public List<ProjectConfig> getExcelInfo(InputStream is) {
List<ProjectConfig> projectConfigList = null;
try {
//创建Workbook
Workbook wb = WorkbookFactory.create(is);
//读取Excel里面客户的信息
projectConfigList = readExcelValue(wb);
} catch (IOException e) {
e.printStackTrace();
}catch (InvalidFormatException e) {

return projectConfigList;

青松世界的主页 青松世界 | 初学一级 | 园豆:82
提问于:2017-08-17 18:10
< >
分享
最佳答案
0

看异常应该是文件格式有问题。有时候Excel能打开的文件不一定就是excel文件,也可能是dbf文件之类的,excel也可以打开它,所有根据excel是否可以打开一个文件的方法来判断是否是一个office格式的文件不太准确

收获园豆:140
会长 | 专家六级 |园豆:12401 | 2017-08-22 17:47
其他回答(4)
0

参考:

 

https://stackoverflow.com/questions/29894185/your-inputstream-was-neither-an-ole2-stream-nor-an-ooxml-stream-while-reading

https://stackoverflow.com/questions/23246850/your-inputstream-was-neither-an-ole2-stream-nor-an-ooxml-stream

ycyzharry | 园豆:25651 (高人七级) | 2017-08-17 19:48

未找到解决方案,请明示

支持(0) 反对(0) 青松世界 | 园豆:82 (初学一级) | 2017-08-18 11:12
0

有时候一些库需要本地安装office的,如果本地安装了没问题,但是你linux服务器上没有安装。所以会出这种问题。

提供一个思路,如果是这样,就得换一个库来读取excel了

lippor | 园豆:51 (初学一级) | 2017-08-18 16:30

linux上需要安装office?有对应的版本要求吗

支持(0) 反对(0) 青松世界 | 园豆:82 (初学一级) | 2017-08-21 10:34

@青松世界: 安装不了,但是有些库不需要安装office就能导出或者读取excel

支持(0) 反对(0) lippor | 园豆:51 (初学一级) | 2017-08-21 13:31
0

文件不是xlsx文件,也就是你用excel也打不开这个文件

小彬 | 园豆:947 (小虾三级) | 2017-08-19 14:51

可以打开,linux服务器上的文件ftp取到本地看过,可以打开

支持(0) 反对(0) 青松世界 | 园豆:82 (初学一级) | 2017-08-21 10:20
0

使用spring mvc 上传文件,POI 在linux 64位下解析不了excel2007文件,而win7 32位下没问题,但使用wps创建的excel都没问题。比较下上传前后文件头是否会变,导致POI识别不了。把文件转换成最新版本的.xlsx文件也许没有问题,老版.xls可能会有问题

谢*勇 | 园豆:304 (菜鸟二级) | 2017-08-19 22:27

poi不是纯java编写的吗?

支持(0) 反对(0) 小彬 | 园豆:947 (小虾三级) | 2017-08-21 10:28

我在代码层兼容 2003 和2007两个版本。

public List<ProjectConfig> getExcelInfo(boolean isExcel2003 ,InputStream in) {
List<ProjectConfig> projectConfigList = new ArrayList<>();
try {
//创建Workbook
Workbook wb = null;
if(isExcel2003){
wb = new HSSFWorkbook(in);
}else{
wb = new XSSFWorkbook(in);
}
//读取Excel里面客户的信息
projectConfigList = readExcelValue(wb);
} catch (IOException e) {
e.printStackTrace();
}

本地测试在:win7+64位+jdk1.8 可以正常读,创建workbook时 .xlsx 和.xls两种类型都正常

部署到linux +64位+jdk1.8 创建workbook时 .xlsx 和.xls两种类型都会报错

支持(0) 反对(0) 青松世界 | 园豆:82 (初学一级) | 2017-08-21 10:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册