2011-06-07 63 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或等待他们的新版本!