Java中poi读取含有失效超链接的Excel2007报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中poi读取含有失效超链接的Excel2007报错相关的知识,希望对你有一定的参考价值。
java.lang.IllegalStateException: The hyperlink for cell C396 references relation rId394, but that didn't exist!
你好,这个问题我遇到过:
你需要做两件事情
超链接内不同时使用#$%^中任意3 个。
取消此时的超链接
解决方案:
你对读取到的每一个cell的值做一下判断,如果含有#$%^中的连续三个,你就做一些异常捕获
利用如下代码取消超链接
if(cell.getHyperlink() != null)
cell.setHyperlink(null);
希望能帮助到你!!有问题继续追问,满意请采纳!!
参考技术A 需要做两件事情:第一,超链接内不同时使用“#$%^”中任意3 个。
第二、取消此时的超链接
解决方案:
1、对读取到的每一个cell的值做一下判断,如果含有“#$%^”中的连续三个,就做一些异常捕获
2、利用如下代码取消超链接
if(cell.getHyperlink() != null)
cell.setHyperlink(null);
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java分为三个体系,分别为Java SE(J2SE,Java2 Platform Standard Edition,标准版),JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版),Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。 参考技术B 在Excel里面 $这个符号是有特殊含义的,加入你的单元格里面可能不小心$引用,有可能是所引用的Excel文件的问题,重新建一个新的excel,然后加一个个人邮箱地址试试。 参考技术C hssf xssf?追问
xssf,Excel文件中有一个失效的链接,无法读取
参考技术D rId394这个有吗?说不存在啊,仔细看看呢追问有是个超链接
利用POI读取Excel有效行数(含有内容)
参考技术A public static void main(String[] args)Workbook wb = null;
try
//如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook
wb = new HSSFWorkbook(new FileInputStream("G:\excel\test.xls"));
catch (Exception e)
e.printStackTrace();
//获取第一个画布
Sheet sheet = wb.getSheetAt(0);
CellReference cellReference = new CellReference("A4");
boolean flag = false;
for (int i = cellReference.getRow(); i <= sheet.getLastRowNum();)
Row r = sheet.getRow(i);
if(r == null)
//如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
continue;
flag = false;
for(Cell c : r)
if(c.getCellType() != Cell.CELL_TYPE_BLANK)
flag = true;
break;
if(flag)
i++;
continue;
else//如果是空白行(即可能没有数据,但是有一定格式)
if(i == sheet.getLastRowNum())
//如果到了最后一行,直接将那一行remove掉
sheet.removeRow(r);
else
//如果还没到最后一行,则数据往上移一行
sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
System.out.println("有效行数为:"+(sheet.getLastRowNum()+1));
以上是关于Java中poi读取含有失效超链接的Excel2007报错的主要内容,如果未能解决你的问题,请参考以下文章
poi操作excel获取所超链接的内容,就是通过sheet1某个超链接获取sheet2的内容
java通过apache poi框架读取2007版Excel文件