我目前正在开发一个 Java 应用程序,该应用程序应该可以填充预格式化的 Excel 文件。
该文件最初是使用 HTML 标签编码的,但我将其转换为真正的 XLS 文件,并删除了过程中的条件格式(因为我在 JXL Yahoo! Group 中看到这会使事情崩溃)。然后它删除了我首先遇到的 NullPointerException
,但这次给了我另一个 StringIndexOutOfBoundsException
。
在向您展示我的代码之前,我必须解释一下,我应该填写的 Excel 文件包含在我的应用程序的 JAR 中。我将它提取到一个临时文件中以便能够正确读取它。我的这部分代码工作完美,因为我在其他应用程序中使用它没有任何问题。
这是我的代码:http://pastebin.com/WcL9jZZD 这是异常(exception):
java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at jxl.biff.EncodedURLHelper.getFile(EncodedURLHelper.java:60) at jxl.biff.EncodedURLHelper.getEncodedURL(EncodedURLHelper.java:51) at jxl.write.biff.SupbookRecord.initExternal(SupbookRecord.java:203) at jxl.write.biff.SupbookRecord.getData(SupbookRecord.java:254) at jxl.biff.WritableRecordData.getBytes(WritableRecordData.java:71) at jxl.write.biff.File.write(File.java:147) at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:913) at qctomantis.tasks.ExcelWriter.doInBackground(ExcelWriter.java:128) at qctomantis.tasks.ExcelWriter.doInBackground(ExcelWriter.java:46) at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source) at 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) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)
有人知道怎么解决吗?我找到了一个 topic在 JXL 雅虎!组,但他们没有给出答案...... 谢谢!
最佳答案
是的。您可能使用的是 Excel 95 或更早版本。将文件转换为 Excel 97 或等待他们的新版本!
关于java - 使用 Java 和 JXL API 编辑 Excel 电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263466/