解决poi导出Excel文件打开警告(一)
项目中需要导出Excel报表,使用poi导出Excel文件,添加依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.2.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.2.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.2.0</version>
</dependency>
导出文件到本地之后打开文件没有问题,上传到服务器之后,从服务器下载重新打开会弹出警告:
发现“XXX.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任此工作簿的源,请单击“是”。
点击 “否” 就不打开文件了,点击 “是” 之后可以打开文件,出现以下提示:
通过修复或删除不可读取的内容,Excel 已能够打开该文件。
从网上查找原因发现:上传文件中包含大量的多余字符。发现在读取本地保存的文件上传服务器时:
public static byte[] fileToByteArray(File file) throws IOException {ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length());BufferedInputStream bin = null;try {bin = new BufferedInputStream(new FileInputStream(file));byte[] buffer = new byte[1024];while (bin.read(buffer) > 0) {bos.write(buffer);}return bos.toByteArray();} finally {try {bos.close();} catch (IOException e) {e.printStackTrace();}try {bin.close();} catch (IOException e) {e.printStackTrace();}}
}
这种方式读取的文件会比真实的文件数据大
修改为每次读取真实的文件数据:
public static byte[] fileToByteArray(File file) throws IOException {ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length());BufferedInputStream bin = null;try {bin = new BufferedInputStream(new FileInputStream(file));byte[] buffer = new byte[1024];int readCount;while((readCount = bin.read(buffer)) >0){bos.write(buffer,0,readCount);}return bos.toByteArray();} finally {try {bos.close();} catch (IOException e) {e.printStackTrace();}try {bin.close();} catch (IOException e) {e.printStackTrace();}}
}
发现相同文件不同方式读取的大小不相同。因为第一种方式读取了多余的脏数据。
修改完成之后会读取真实的文件数据,上传到服务器上之后重新下载不会弹出警告信息。
解决poi导出Excel文件打开警告(一)相关推荐
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法...
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开
使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...
- springboot中使用poi导出excel文件(亲测实现了第一个功能)
1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...
- POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决
//创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...
- 解决前端导出excel文件,打开为乱码
前端开发中,导入和导出文件是比较常见的业务场景,楼主在初次接触此类问题时,也在此卡了几天,好在问题最终也得以解决,废话不多说了直接上代码: <el-upload:on-error="u ...
- 解决EasyPoi导出Excel文件后提示无法打开文件的问题
本来项目中导出Excel文件借助EasyPoi用得好好的,今天测试时发现对要导出的数据做了筛选后,导出的Excel文件打开就会弹出"无法打开文件"的提示,如图所示: 经过网上寻找答 ...
- C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致。
方法一(不提倡) 产生此问题的原因: 我写入Excel的不是正常的Excel格式,说白了就是我用Response.WriteFile("k:\\StudentMarks.xls") ...
- poi导出excel文件,并生成原生图表(包括折线图,柱状图,饼状图,面积图)
前段时间,因为客户需要,要做一个导出excel文件功能,并能生成原生的图表的(不是把图片插入到excel文档),找了很多文档看,也看了很多别人的代码,个人也总结了一下,不足之处,请各位大牛谅解. 需要 ...
- poi导出excel无法打开文件
问题 测试环境发现导出的文件无法正常打开 之前导出能打开 排查 发现poi由3.x升级为4.x 本地后端调试生成excel文件能正常打开,经过浏览器也能下载 初步定位因升级依赖版本,前端需调整 解决 ...
最新文章
- zabbix自动化监控8(2.4)
- 2022年年底前山东将打造30个以上绿色数据中心 逐步淘汰高能耗中小型数据中心...
- 东南亚下半年做什么产品好?解读Lazadashopee服装类热销及需求品类
- 人生苦短,Let's Go!
- asp.net,关于Listview+DataPager控件使用
- Android学习笔记篇1. 从按钮的点击事件开始
- python循环数组判断,python的数据类型、数组、条件判断、循环的基础知识
- [iOS Animation]-CALayer 性能优化实例
- struct作为map的key时,需要重载该结构体
- JMeter插件模拟发送UDP请求:UDP sampler
- Server Tomcat v8.0 Server at localhost failed to start.
- java 学习笔记之AtomicInteger类的使用
- 使用ArcGIS软件对 .jpg 图片添加经纬网及地理配准失败的原因
- OOK调制解调的FPGA实现,求Verilog代码
- 易趋携手电气风电,推进产品研发项目管理能力进阶
- 理解无线电波极化与天线极化
- python缩进可以用在任何语句之后_Python程序中,缩进表达所属关系,在缩进的前一行最后,需要使用符号 Python 语句中增...
- 对驱动器盘符和卷名的认识
- 华硕ddns注册ip地址不正确_华硕路由器 ddns注册成功,但是连接不上,怎么修改成别的ddns...
- 新手必学的的web渗透测试查找漏洞(一)