项目中需要导出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文件打开警告(一)相关推荐

  1. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法...

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

  2. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  3. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  4. POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决

    //创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...

  5. 解决前端导出excel文件,打开为乱码

    前端开发中,导入和导出文件是比较常见的业务场景,楼主在初次接触此类问题时,也在此卡了几天,好在问题最终也得以解决,废话不多说了直接上代码: <el-upload:on-error="u ...

  6. 解决EasyPoi导出Excel文件后提示无法打开文件的问题

    本来项目中导出Excel文件借助EasyPoi用得好好的,今天测试时发现对要导出的数据做了筛选后,导出的Excel文件打开就会弹出"无法打开文件"的提示,如图所示: 经过网上寻找答 ...

  7. C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致。

    方法一(不提倡) 产生此问题的原因: 我写入Excel的不是正常的Excel格式,说白了就是我用Response.WriteFile("k:\\StudentMarks.xls") ...

  8. poi导出excel文件,并生成原生图表(包括折线图,柱状图,饼状图,面积图)

    前段时间,因为客户需要,要做一个导出excel文件功能,并能生成原生的图表的(不是把图片插入到excel文档),找了很多文档看,也看了很多别人的代码,个人也总结了一下,不足之处,请各位大牛谅解. 需要 ...

  9. poi导出excel无法打开文件

    问题 测试环境发现导出的文件无法正常打开 之前导出能打开 排查 发现poi由3.x升级为4.x 本地后端调试生成excel文件能正常打开,经过浏览器也能下载 初步定位因升级依赖版本,前端需调整 解决 ...

最新文章

  1. zabbix自动化监控8(2.4)
  2. 2022年年底前山东将打造30个以上绿色数据中心 逐步淘汰高能耗中小型数据中心...
  3. 东南亚下半年做什么产品好?解读Lazadashopee服装类热销及需求品类
  4. 人生苦短,Let's Go!
  5. asp.net,关于Listview+DataPager控件使用
  6. Android学习笔记篇1. 从按钮的点击事件开始
  7. python循环数组判断,python的数据类型、数组、条件判断、循环的基础知识
  8. [iOS Animation]-CALayer 性能优化实例
  9. struct作为map的key时,需要重载该结构体
  10. JMeter插件模拟发送UDP请求:UDP sampler
  11. Server Tomcat v8.0 Server at localhost failed to start.
  12. java 学习笔记之AtomicInteger类的使用
  13. 使用ArcGIS软件对 .jpg 图片添加经纬网及地理配准失败的原因
  14. OOK调制解调的FPGA实现,求Verilog代码
  15. 易趋携手电气风电,推进产品研发项目管理能力进阶
  16. 理解无线电波极化与天线极化
  17. python缩进可以用在任何语句之后_Python程序中,缩进表达所属关系,在缩进的前一行最后,需要使用符号 Python 语句中增...
  18. 对驱动器盘符和卷名的认识
  19. 华硕ddns注册ip地址不正确_华硕路由器 ddns注册成功,但是连接不上,怎么修改成别的ddns...
  20. 新手必学的的web渗透测试查找漏洞(一)

热门文章

  1. 路由的params参数
  2. 证书链不完整的解决方法
  3. 漫谈UML OOAD and RUP
  4. android 预置 app,AOSP 预置 APP
  5. 项目二:使用交换机构建局域网——交换机的基本命令
  6. 一个想法照进现实-《IT连》创业项目:一个转折一个反思
  7. 流媒体基础知识TS流 PS流 ES流区别
  8. Python学习之批量word文档转pdf并统计其页码
  9. java 实现用 我爱你来重新绘制图片 泡妹子专用
  10. 题解 | #H.Until the Blue Moon Rises#