日期:2014-05-17  浏览次数:20764 次

poi3.8读取 Excel2007中含有超链接的单元格 会出错。求解决!
public static void readExcel2007()
{
InputStream in = null;
try
{
in = new FileInputStream("d:\\b.xlsx");
// 创建work
Workbook work = new XSSFWorkbook(in);//主要在这里报错
// 得到第一个sheet
Sheet sheet = work.getSheetAt(0);
// 获取总行数
int rowNum = sheet.getLastRowNum();

Row row = null;
// 循环每一行
for (int i = 1; i <= rowNum; i++)
{
row = sheet.getRow(i);
if (null == row)
{
continue;
}
Cell cell = row.getCell(0);
if (cell != null)
{
System.out.println(cell.getStringCellValue());
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
readExcel2003();
}


异常信息:
java.lang.IllegalStateException: The hyperlink for cell A2 references relation rId1, but that didn't exist!
at org.apache.poi.xssf.usermodel.XSSFHyperlink.<init>(XSSFHyperlink.java:70)
at org.apache.poi.xssf.usermodel.XSSFSheet.initHyperlinks(XSSFSheet.java:250)
at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:203)
at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:175)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:227)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:181)
at ImportExcel.ImportExcelDemo.readExcel2007(ImportExcelDemo.java:73)
at ImportExcel.ImportExcelDemo.main(ImportExcelDemo.java:103)

Excel文件: 其中aa@aa.com是超链接(也不知道为什么,打上去自动就是超链接)

Account Name
aa@aa.com 张杰
jjke gf


------解决方案--------------------
在Excel里面 $这个符号是有特殊含义的,加入你的单元格里面可能不小心$引用:
我怀疑是你做实验的Excel文件的问题,同样的代码我的一点问题都没有

你重新建一个新的excel,然后加一个个人邮箱地址试试


引用:

引用:
你能不能参考我给你写的代码,以这个为基础改,这个对@ $$% 处理没有任何问题

我已经说了N遍……