2010-11-09 127 views
0

我在尝试将某些数据导出到Excel时被卡住了一点。从Java导出到Excel - InvocationTargetException

这里是我的代码

线路
List<String> headers = new ArrayList<String>(); 
////////////////////////////////////////////// 
/// Added some headers in between to the list    
/////////////////////////////////////////////// 

HSSFCell[] cell = new HSSFCell[headers.size()]; 

for (int i = 0; i < headersHSSF.length; i++) { 
    cell[i] = excelRow.createCell(i);  
    cell[i].setCellValue(new HSSFRichTextString(headers.get(i))); 
} 

此代码抛出的InvocationTargetException

cell[i].setCellValue(new HSSFRichTextString(headers.get(i))); 

谁能告诉我为什么会这样呢?

(PS:我打电话从Flex的UI代码这不是从Java代码中调用)

+0

您可能需要为该异常提供堆栈跟踪。 'InvocationTargetException'仅仅意味着间接调用的方法(例如通过反射)抛出一个检查的异常。所以现在唯一可以搜集到的信息是“出错了”。 ;-) – 2010-11-09 10:27:16

+0

我已经有一个尝试围绕它,它没有显示任何东西在服务器控制台:( – Vishal 2010-11-09 10:30:00

+0

@pvsm - 我们*需要*堆栈跟踪,你有日志吗?任何机会来记录异常? – 2010-11-09 10:50:08

回答

0

的InvocationTargetException是经过检查的异常包装由调用方法或构造函数抛出的异常。

可能是,创建HSSFRichTextString类时抛出异常。在这种情况下,我会首先查看(调试)值headers.get(i)

有一个很好的机会,你实际上有一个嵌套的IndexOutOfBoundsException,因为headersHSSF数组的大小可能会大于headers列表的大小。

改变循环签名:

for (int i = 0; i < headers.size(); i++) { 

和检查,如果错误是一样的,走的或不同的。