2011-06-07 42 views
2

我目前正在開發一個Java應用程序,它應該可以填充預先格式化的Excel文件。 該文件最初是使用HTML標記編碼的,但我將其轉換爲真正的XLS文件,刪除了該過程中的條件格式(因爲我在JXL Yahoo! Group中看到它使事情崩潰)。然後它刪除了我原來的NullPointerException,但這次又給了我一個StringIndexOutOfBoundsException用Java和JXL API編輯Excel電子表格

在向您顯示我的代碼之前,我必須解釋一下,我應該填充的Excel文件包含在我的應用程序的JAR中。我將它解壓縮到一個臨時文件中,以便能夠正確讀取它。我的代碼的這部分工作完美,因爲我在其他應用程序中使用它沒有任何問題。

這裏是我的代碼:http://pastebin.com/WcL9jZZD 而這裏的例外:

java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:1 在java.lang.String.charAt(String.java:686) 在jxl.biff.EncodedURLHelper.getFile(EncodedURLHelper.java:60) 在jxl.biff.EncodedURLHelper.getEncodedURL(EncodedURLHelper.java:51) 在jxl.write.biff.SupbookRecord.initExternal(SupbookRecord.java:203) at jxl.write.biff.SupbookRecord.getData(SupbookRecord.java:254) at jx (WritableRecordData.java:71) at jxl.write.biff.File.write(File.java:147) at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:913) 在qctomantis.tasks.ExcelWriter.doInBackground(ExcelWriter.java:128) 在qctomantis.tasks.ExcelWriter.doInBackground(ExcelWriter.java:46) 在org.jdesktop.swingworker.SwingWorker $ 1.call(來源不明) 在java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.jdesktop.swingworker.SwingWorker.run(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908) 在java.lang.Thread.run(Thread.java:662)

有誰知道如何解決這個問題?我在JXL Yahoo!上找到了一個topic。集團,但他們不給答案... 謝謝!

回答

0

yes.You可能使用Excel 95或更早版本。將文件轉換爲Excel 97或等待他們的新版本!