Редактировать электронную таблицу Excel с Java & JXL API - PullRequest
2 голосов
/ 07 июня 2011

В настоящее время я разрабатываю приложение 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) at java.lang.Thread.run (Thread.java:662)

Кто-нибудь знает, как это решить? Я нашел тему в JXL Yahoo! Группа, но они не дают ответа ... Спасибо!

1 Ответ

0 голосов
/ 17 ноября 2012

да. Возможно, вы используете Excel 95 или более раннюю версию.Преобразуйте файл в Excel 97 или дождитесь их нового выпуска!

...