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代码中怎样给导出的excel表中某一列加超链接样式

java通过apache poi框架读取2007版Excel文件

用Java在excel单元格中设置超链接

求助 自动读取excel并将其里面的批量超链接,然后批量进行下载

java 关于poi读取excel颜色