在Excel中,提供列号,找到空的下一个空单元格并输入数据。 (JAVA)

时间:2013-04-03 19:27:09

标签: java excel

我有一些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");

}

失败并出现以下错误:

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

有人可以帮忙吗?

谢谢, 麦克

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;
}

这对我有用!我想我以前的做法本身就错了。