使用 Java 和 Java 编辑 Excel 电子表格JXL API
我目前正在开发一个 Java 应用程序,该应用程序应该填充预先格式化的 Excel 文件。 该文件最初是使用 HTML 标签编码的,但我将其转换为真正的 XLS 文件,删除了过程中的条件格式(因为我在 JXL Yahoo! Group 它使事情崩溃)。然后它首先删除了我遇到的 NullPointerException
,但这次又给了我另一个 StringIndexOutOfBoundsException
。
在向您展示我的代码之前,我必须解释一下,我应该填充的 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) 在 jxl.write.biff.SupbookRecord.getData(SupbookRecord.java:254) 在 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(来源未知) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 org.jdesktop.swingworker.SwingWorker.run(来源未知) 在 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! 中发现了一个主题组,但他们没有给出答案...... 谢谢 !
I'm currently developing a Java app that's supposed to fill a preformatted Excel file.
The file was originally coded using HTML tags, but I converted it to a real XLS file, removing the conditional formatting in the process (because I saw in JXL Yahoo! Group that it makes the thing crash). It then removed the NullPointerException
I had in the first place, but gave me another, a StringIndexOutOfBoundsException
this time.
I have to explain before showing you my code, that the Excel file I'm supposed to fill is contained in the JAR of my application. I extract it in a temporary file to be able to read it properly. This part of my code works perfectly since I use it in others apps without any issues.
Here's my code : http://pastebin.com/WcL9jZZD
And here's the 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)
Does anyone know how to solve this ? I found a topic in the JXL Yahoo! Group, but they do not give the answer...
Thanks !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的。您可能使用的是 Excel 95 或更早版本。将文件转换为 Excel 97 或等待他们的新版本!
yes.You are probably using Excel 95 or earlier. Convert the file to Excel 97 or wait for their new release!