0

我有一些数据的excel。说:

  • 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");

}

它失败并出现以下错误:

线程“主”jxl.write.biff.RowsExceededException 中的异常:jxl.write.biff.WritableSheetImpl 的 jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:1214) 超出了工作表允许的最大行数.addCell(WritableSheetImpl.java:1151) 在 com.tivo.tsg.common.XLWriter.appendData(XLWriter.java:59) 在 com.tivo.tsg.common.XLWriter.main(XLWriter.java:79)

有人可以帮忙吗?

谢谢,迈克

4

2 回答 2

0

注意:旧版 Microsoft Excel(文件扩展名为 *.xls)支持 65536(2 次方 16)。检查您是否尝试获取或写入大于 65536 行的位置。

故障排除选项:

  1. 在循环内打印 'i' 的值,看看它失败的次数。它可能会提供更多线索。
  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

于 2013-04-03T20:04:26.363 回答
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;
}

这对我有用!我想我以前的方法本身是错误的。

于 2013-04-10T06:41:38.747 回答