现象:

点"是(Y)"

提示信息中提到的error242440_02.xml文件:

问题重现:

package poi;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class FoundUnreadRecord {public static void main(String[] args) throws IOException {int rowNum = 1;createExcel_Reference(rowNum);createExcel_WithTips(rowNum);rowNum = 0;createExcel_Reference(rowNum);createExcel_WithTips(rowNum);}private static void createExcel_Reference(int rowNum) throws FileNotFoundException,IOException {String fileName = "UnreadRecordTips_Reference"+rowNum+".xlsx";XSSFWorkbook wb = new XSSFWorkbook();        Sheet sheet = wb.createSheet("UnreadRecordTips");for (int i = 0; i <= rowNum; i++) {Row row = sheet.createRow(i);Cell cell = row.createCell(0);cell.setCellValue("test" + i);}write(fileName, wb);}private static void createExcel_WithTips(int rowNum) throws FileNotFoundException,IOException {String fileName = "UnreadRecordTips"+rowNum+".xlsx";;XSSFWorkbook wb = new XSSFWorkbook();Sheet sheet = wb.createSheet("UnreadRecordTips");for (int i = 0; i <= rowNum; i++) {Row row = sheet.createRow(i);Cell cell = row.createCell(0);cell.setCellValue("test" + i);sheet.addMergedRegion(new CellRangeAddress(0, rowNum, 0, 0));}write(fileName, wb);}private static void write(String fileName, XSSFWorkbook wb)throws FileNotFoundException, IOException {OutputStream stream = new FileOutputStream(fileName);wb.write(stream);stream.close();}
}

分析及原因:
org.apache.poi.xssf.usermodel.XSSFWorkbook下进行合并单元格操作,
org.apache.poi.ss.util.CellRangeAddress.CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
中涉及的单元格,如果对其中任何一个单元格进行超过一次addMergedRegion操作,则生成的excel打开时,会出现以上提示。
TIPS:
(1)org.apache.poi.hssf.usermodel.HSSFWorkbook.HSSFWorkbook()无此问题。可能是因为XSSFWorkbook是基于OOXML(.xlsx) file format
(2)POI进行一次addMergedRegion操作,每Cell中值仍然可以读取,只是在Excel中没有显示

package poi;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class MergedRegionReadHiddenValue {private static final String sheetName="mergedRegion";public static void main(String[] args) throws IOException {Workbook wb;wb=new HSSFWorkbook();String fileName="mergedRegion.xls";createExcelWithMergedRegion(wb,fileName);InputStream s=new FileInputStream(fileName);wb=new HSSFWorkbook(s);travelSheet(wb, sheetName);s.close();System.out.println("xls End.=========================xlsx Begin");wb=new XSSFWorkbook();fileName="mergedRegion.xlsx";createExcelWithMergedRegion(wb,fileName);s=new FileInputStream(fileName);wb=new XSSFWorkbook(s);travelSheet(wb, sheetName);s.close();}private static void createExcelWithMergedRegion(Workbook wb,String fileName)throws FileNotFoundException, IOException {Sheet sheet=wb.createSheet(sheetName);int lastRowNum=2;for (int i=0;i<=lastRowNum;i++) {createRowFillValue(sheet,i);}sheet.addMergedRegion(new CellRangeAddress(0, lastRowNum, 0, 0));write(wb, fileName);}private static void travelSheet(Workbook wb, String sheetName) {Sheet sheet;sheet=wb.getSheet(sheetName);for (Row row : sheet) {System.out.println(row.getCell(0).getStringCellValue());}}private static void write(Workbook wb, String fileName)throws FileNotFoundException, IOException {OutputStream stream=new FileOutputStream(fileName);wb.write(stream);stream.close();}private static void createRowFillValue(Sheet sheet,int rowIdx) {Row row=sheet.createRow(rowIdx);Cell cell=row.createCell(0);cell.setCellValue("CellValue,"+rowIdx+",0");;}}

OutPut:

CellValue,0,0
CellValue,1,0
CellValue,2,0
xls End.=========================xlsx Begin
CellValue,0,0
CellValue,1,0
CellValue,2,0

生成的Sheet内容示例:

问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】...相关推荐

  1. Java 下载 Excel模板时,报修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击是

    代码如下: /*** 下载导入应用模板** @return*/@ResponseBody@RequestMapping(method = RequestMethod.GET)public Respon ...

  2. EXCEL中发现不可读的内容。是否恢复此工作薄的内容?如果信任此工作薄的来源,请单击”是“

    由于业务需要,之前的EXCEL导出方法不能满足需求,因为2003只支持最多256列,但是2007就没有256列这个限制,因此升级NPOI到2.0 使用XSSFWorkbook生成xlsx,等下载下来之 ...

  3. WPS office出现“xxx.docx中发现无法读取内容,是否恢复此文档中的内容......word在试图打开文件时遇到错误” 紧急解决方案 -- 小黑日常超细解决教程

    电脑自带WPS office的word,遇到打开文档时出现弹窗"word在xxx.docx中发现无法读取的内容.是否恢复此文档的内容?如果您信任此文档的来源,请点击"是" ...

  4. Flexcell 导出Excel 打不开,提示Excel在“XXXX.xls” 中发现不可读取的内容。是否要回复此工作薄的内容?如果信任此工作薄的来源,请点击“是”。...

    我们在项目中应用Flexcell 导出Excel时报错,提示Excel在"XXXX.xls" 中发现不可读取的内容.是否要回复此工作薄的内容?如果信任此工作薄的来源,请点击&quo ...

  5. NPOI “发现 中的部分内容有问题,是否要恢复此工作薄的内容?如果信任此工作薄的来源。。。”的问题的解决方法...

    网上说的方法是调整Sheet可见和顺序:https://blog.csdn.net/hulihui/article/details/21196951 stackoverflow给出的解释是:单元格存储 ...

  6. Excel催化剂开源第10波-VSTO开发之用户配置数据与工作薄文件一同存储

    在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用 ...

  7. 用vb打开word excel 文件,出现提示“发现不可读取的内容”

    Private Function secgoppt(Optional a As String) Dim moPptApp As PowerPoint.Application Dim moPptPres ...

  8. xlsx发现不可读取的内容,是否恢复此工作簿的内容?

    问题描述 Excel生成在生成流并且打包到.zip文件的时候,从网络上copy了一段代码,自己修改了部分,代码如下: public void saveAsZip(String xlsxName, Ou ...

  9. 杂记:Word在试图打开文件时遇到错误/Word在.docx中发现无法读取的内容

    2023.6.3更新:如果看不明白.不会操作的,发我邮箱(275245802@qq.com),我可以帮忙试一下修复. 问题 .docx的文档损坏打不开,使用各种百度到的修复办法/修复工具/在线修复网页 ...

最新文章

  1. 计算机应用房地产,房地产板块弱市吸金 逾30亿撤离计算机应用板块
  2. 【风之语】至贱城市之苏州
  3. fpga fft项目整理
  4. CentOS6.3 Samba安装配置、多用户、加域
  5. OC画笔CGContextRef
  6. U-boot mkimage指定Linux内核地址时的两种方式
  7. RecyclerView.Adapter:全能notify解决方案
  8. 一种基于openflow的虚拟化层软件flowvisor的API测试
  9. NoSQL开篇——为什么要使用NoSQL
  10. c java开发对比_编程语言:Java和C语言的比较,你更偏向于哪个?老程序员:选C...
  11. itop docker3.0.0安装
  12. c#划分目录和文件(小白的一点经验)
  13. C++11 POD 类型
  14. Asp.Net资料网址
  15. cssci核心期刊(cssci核心期刊目录)
  16. matlab画圆的命令_matlab画圆命令
  17. 【精选】那些莫名其妙但又不得不服的经济学/社会学/心理学著名定律/效应
  18. Java冒泡排序法 经典例题
  19. uniapp小程序倒计时
  20. 可达性分析算法与理解误区

热门文章

  1. php __call实现多继承,php如何使用_call实现多继承(代码示例)
  2. project a vertex along its normal onto a triangle
  3. FCN论文-语义分割
  4. 基于自动图像分割算法和扩展数据集深度学习的经济作物病害识别
  5. linux内核计算次方,linux内核中的循环缓冲去的设计与实现
  6. jdk 安装cmd运行java_windows下安装jdk,cmd下编译运行java程序一点心得
  7. 减少访问量_Nginx服务器高性能优化轻松实现10万并发访问量
  8. 计算机视觉FPN: 特征金字塔网络
  9. 常见面试算法:Logistic回归、树回归
  10. 百度下拉词推广是什么?