2013-04-03 45 views
0

我有一些數據的excel。說:在Excel中,提供了列號,找到空的下一個空單元格並輸入數據。 (Java)

  • 列A有數據,直到行3;
  • B列有數據直到第18行;
  • C列的數據直到第12行;

我需要一個帶有參數列和數據的方法,該方法轉到該列中的下一個可用單元格並輸入數據。

例如appendData(0,「Xyz」)應該在單元格A4中輸入「Xyz」。 我正在使用jxl。這是我能得到什麼,直到現在..

public static void appendData(int column, String data) throws BiffException, IOException, WriteException{ 
    Workbook file=Workbook.getWorkbook(inputWorkbook); 
    WritableWorkbook writeBook=Workbook.createWorkbook(inputWorkbook,file); 
    WritableSheet sheet = writeBook.getSheet(0); 
    WritableFont wf=new WritableFont(WritableFont.ARIAL); 

    WritableCellFormat cf = new WritableCellFormat(wf); 

    cf.setWrap(true); 
    for (int i = 0; i <= sheet.getRows(); i++) { 
     Cell cell = sheet.getCell(column, i); 
     String cellContent = cell.getContents().toString(); 
     if (cellContent.isEmpty()) { 
      Label label = new Label(column, i, data,cf); 
      sheet.addCell(label); 
     } 
    } 
    writeBook.write(); 
    writeBook.close(); 
    return; 
} 

    public static void main(String[] args) throws BiffException, WriteException, IOException{ 
    appendData(0, "UID1"); 

}

它與下面的錯誤而失敗:

異常線程 「main」 jxl.write.biff.RowsExceededException:最大數在工作表上允許的行被在jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:1214) 在com.tivo超過 在jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1151) 。 tsg.common.XLWriter.appendData(XLWriter.java:59) at com.tivo.tsg.common.XLWriter.main(XLWriter.java:79)

有人請幫忙嗎?

謝謝, 邁克

+0

PS:我查看了與JXL相關的類似問題。無法獲得足夠的信息,我的方案。 – Mike 2013-04-03 19:27:55

+0

就像把'i <='改成'我'一樣簡單嗎? – 2013-04-03 19:32:23

+0

問:當你遇到錯誤時,#/行是什麼。問:你看過[這個鏈接](http://stackoverflow.com/questions/13658369/java-jxl-exception-with-maximum-row)還是[this one](http://www.vogella。COM /用品/ JavaExcel/article.html)?問:「我<= sheet.getRows()」是什麼?這是故意的,還是一個錯誤? – paulsm4 2013-04-03 19:32:31

回答

0
public static void appendData(int column, String data) throws BiffException, IOException, WriteException{ 
    Workbook file=Workbook.getWorkbook(inputWorkbook); 
    WritableWorkbook writeBook=Workbook.createWorkbook(inputWorkbook,file); 
    WritableSheet sheet = writeBook.getSheet(0); 
    WritableFont wf=new WritableFont(WritableFont.ARIAL); 
    WritableCellFormat cf = new WritableCellFormat(wf); 
    cf.setWrap(true); 
    Cell[] cell = sheet.getColumn(column); 
    int len = cell.length; 
    Label label = new Label(column, len, data,cf); 
    sheet.addCell(label); 
    writeBook.write(); 
    writeBook.close(); 
    return; 
} 

這爲我工作!我想我以前的做法本身是錯誤的。

0

注:舊版本的Microsoft Excel(文件擴展名是* .xls的)支持65536點(2功率16)。檢查你是否試圖獲取或寫入大於65536行的地方。

疑難解答選項:

  1. 打印的「我」內循環,看看在什麼算失敗值。它可能會提供更多線索。
  2. 什麼是你的文件中的59。異常在代碼的第59行開始。分享細節,它可以提供幫助。 com.tivo.tsg.common.XLWriter.appendData(XLWriter.java:59)

  3. 檢查從這個鏈接提示設置附加選項的最後2個答案。這可能有助於解決問題。

    http://community.jaspersoft.com/questions/518045/maximum-number-rows-within-excel-spreadsheet

相關問題