2010-11-09 128 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++) { 

和檢查,如果錯誤是一樣的,走的或不同的。