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) at com.tivo.tsg.common.XLWriter.appendData(XLWriter.java:59) at com.tivo.tsg.common.XLWriter.main(XLWriter.java:79)

誰か助けてくれませんか?

ありがとう、マイク

4

2 に答える 2

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 に答える
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 に答える