2012-07-07 30 views
1

我有一個indexoutofboundsexception,我瀏覽了互聯網並查看了幾種不同的解決方案,但沒有使用此代碼。jexcel API中的IndexOutOfBoundsException

這裏是我的錯誤信息:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
at java.util.ArrayList.RangeCheck(ArrayList.java:547) 
at java.util.ArrayList.get(ArrayList.java:322) 
at jxl.write.biff.WritableWorkbookImpl.getSheet(WritableWorkbookImpl.java:408) 
at Segmentation.main(Segmentation.java:81) 

線81:

WritableSheet sheet = copy.getSheet(0); 

有些幫助將是非常非常感謝。謝謝!

import java.io.File; 
import java.util.Date; 
import jxl.*; 
import java.io.IOException; 
import jxl.read.biff.*; 
import jxl.write.*; 
import jxl.Workbook; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.net.MalformedURLException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLEncoder; 

public class Segmentation{ 



    private static final String googleTranslate = "http://http://translate.google.com/#zh-CN|zh-TW|"; 

    public static String translate(String string) { 

     String translation = googleTranslate + string; 
     URL translationURL; 

     try { translationURL = new URL(translation); } 
     catch(MalformedURLException e) { return e.getMessage(); } 

     BufferedReader httpin; 
     String fullPage = ""; 
     System.out.println(translation); 
     try { 
      httpin = new BufferedReader(
        new InputStreamReader(translationURL.openStream())); 
      String line; 
      while((line=httpin.readLine()) != null) { fullPage += line + '\n'; } 
      httpin.close(); 
     } catch(IOException e) { return e.getMessage(); } 

     int begin = fullPage.indexOf("<span class=\"\">"); 
     int end = fullPage.indexOf("</span>"); 

     return fullPage.substring(begin + 15, end); 

    } 


public static void main(String[] args) throws IOException, WriteException, BiffException 
    { 

     /*try 
     { 
      Workbook workbook = Workbook.getWorkbook(new File("DATA_Chinese_All.xls")); 
      Sheet sheet = workbook.getSheet(0); 



     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (BiffException e) 
     { 
      e.printStackTrace();}*/ 



      Workbook workbook = Workbook.getWorkbook(new File("DATA_Chinese_All.xls")); 
      WorkbookSettings s = new WorkbookSettings(); 
      s.setUseTemporaryFileDuringWrite(true); 
      WritableWorkbook copy = Workbook.createWorkbook(new File("someFile.xls"), s); 
      //WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook); 


      WritableSheet sheet = copy.getSheet(0); 




      int max = 302; 
      int count = 0; 
      for(int i = 1; i < max; i++) 
      { 
       WritableCell cell = sheet.getWritableCell(1, i); 

       if (cell.getType() == CellType.LABEL); 

       { 

        Label l = (Label) cell; 
        //Result = "http://translate.google.com/#zh-CN|zh-TW|"+(l.getContents();) 
        l.setString(translate(l.getContents())); 

        //l.setString(); 
       } 
       count++; 

      copy.write(); 
      copy.close(); 






    } 




} 
} 
+0

多少張就新創建的工作簿包含createSheet? – 2012-07-07 21:19:50

+0

@ user1329572「Size = 0」是否意味着您可以檢索索引爲0的工作表? – 2012-07-07 21:23:01

+0

我認爲新創建的工作簿包含1張工作表,即工作表0. – user1504517 2012-07-07 21:35:00

回答

0
+1

謝謝!這解決了錯誤,也許我應該採取不同的方向哈哈。 不過,現在我得到一個不同的錯誤:(在線程「主要」 java.lang.ClassCastException 例外:jxl.biff.EmptyCell不能Segmentation.main(分割被轉換爲jxl.write.Label \t。 Java的:96) – user1504517 2012-07-07 21:36:49