我目前正在开发一个应该填充预先格式化的Excel文件的Java应用程序。
该文件最初使用HTML标签编码,但我将其转换为真正的XLS文件,删除了该过程中的条件格式(因为我在JXL Yahoo! Group中看到它使事情崩溃)。然后它首先移除了我NullPointerException
,但这次给了我另一个StringIndexOutOfBoundsException
。
我必须在向您展示我的代码之前解释一下,我应该填写的Excel文件包含在我的应用程序的JAR中。我在临时文件中提取它以便能够正确读取它。这部分代码完美无缺,因为我在其他应用程序中使用它没有任何问题。
这是我的代码:http://pastebin.com/WcL9jZZD 这是例外:
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:1 at 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) 在jxl.write.biff.SupbookRecord.getData(SupbookRecord.java:254) at jxl.biff.WritableRecordData.getBytes(WritableRecordData.java:71) 在jxl.write.biff.File.write(File.java:147) 在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(未知来源) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303) 在java.util.concurrent.FutureTask.run(FutureTask.java:138) 在org.jdesktop.swingworker.SwingWorker.run(未知来源) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) 在java.lang.Thread.run(Thread.java:662)
有谁知道如何解决这个问题?我在JXL Yahoo!中找到了topic小组,但他们没有给出答案...... 谢谢!
答案 0 :(得分:0)
是的。您可能正在使用Excel 95或更早版本。将文件转换为Excel 97或等待他们的新版本!