以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  该程序为什么会出现java.lang.ArrayIndexOutOfBoundsException: 0异常,希望高手帮助  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=56614)


--  作者:zhjdenis
--  发布时间:12/11/2007 3:34:00 PM

--  该程序为什么会出现java.lang.ArrayIndexOutOfBoundsException: 0异常,希望高手帮助
我想利用JAVA将EXCEL中的数据取出,然后将其整理后重新保存入新的EXCEL文件,但是出现了错误,望指教,谢谢!附件是连接JXL的JAR包,和一个简单的用于调试程序的excel表格
原始数据格式为
zhang san,li si,zhou wu               101
zheng wang,xiao li                     102
希望将数据整理如下形式:
zhang san                               101
li si                                         101
zhou wu                                 101
zheng wang                            102
xiao li                                      102
代码如下:
import java.io.File;
import java.io.IOException;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class ExcelWrite {
 static WritableWorkbook wwb;
 
 public ExcelWrite()
 {
 try {
 wwb=Workbook.createWorkbook(new File("C:/newbook1.xls"));
 } catch (IOException e) { e.printStackTrace();
  }
 }
//从一个excel表格中读取数据,并转换形式后存入新的excel表格 
public void readExcel(String filename){    
     Workbook wb = null;    
     try {    
         //构造Workbook(工作薄)对象    
         wb=Workbook.getWorkbook(new File(filename));    
     } catch (BiffException e) {    
         e.printStackTrace();    
     } catch (IOException e) {    
         e.printStackTrace();    
     }       
     if(wb==null)    
         return;        
  //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了    
     Sheet[] sheet = wb.getSheets();    
     if(sheet!=null&&sheet.length>0)
     {    
         for(int i=0;i<sheet.length;i++)
         {
          int totalnum=0;
          WritableSheet ws=wwb.createSheet("zhj"+i, 0);
          Sheet sh=sheet[i];
          int rownum=sh.getRows();
          for(int j=0;j<rownum;j++)
          {
           
          Cell[]cell=sh.getRow(j);//获得当前行的所有单元格
                String content=cell[0].getContents();//获得第1个单元格的内容
           System.out.println(content);
      String[]newstr=stringSplit(content);
           /*for(String s:newstr)
           {
         System.out.println(s);
           }*/
          String recordnum=cell[1].getContents();//获得第2个单元格的内容
          System.out.println(recordnum);
           System.out.println(newstr.length);
           for(int k=0;k<newstr.length;k++)
           {
          Label labelcontent=new Label(0,totalnum,newstr[k]);
          Label labelrecord=new Label(1,totalnum,recordnum);
            totalnum++;
          try {    
                             //将生成的单元格添加到工作表中    
                             ws.addCell(labelcontent);
                             ws.addCell(labelrecord);
                             wwb.write();   //从内存中写入文件中
                         } catch (RowsExceededException e) {    
                             e.printStackTrace();    
                         } catch (WriteException e) {    
                             e.printStackTrace();    
                         } catch (IOException e) {                                e.printStackTrace();                              }    
          }

               
          }
         }
        
     }
     try {  
            //关闭资源,释放内存    
            wwb.close();    
        } catch (IOException e) {    
            e.printStackTrace();    
        } catch (WriteException e) {    
            e.printStackTrace();    
        }    
      //最后关闭资源,释放内存    
       wb.close();
 }   
    public String[] stringSplit(String str)
    {
     String[]newstr=str.split(",");
     return newstr;
    }
 
}

public class Indoor {
 public static void main(String[] args) {
  String filename="C:/book1.xls";
  ExcelWrite ew=new ExcelWrite();
  ew.readExcel(filename);

 }

}


--  作者:zhjf83
--  发布时间:12/17/2007 3:59:00 PM

--  
等待高手为你解答.
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,070.313ms