2

JExcelApiでスプレッドシートを書いています。

通貨の書式設定を適用したい 2 つのセルがあります。API を読んで、jxl.write.NumberFormat を発見しました。私のアプリケーションでは、次のように書いています。

NumberFormat currency = new NumberFormat(NumberFormat.CURRENCY_DOLLAR);
WritableCellFormat currencyFormat = new WritableCellFormat(currency);

cells.add(new Formula(col, row, myFormula, currencyFormat));

col と row は、書き込む列と行です。myFormula は、記述される数式です。1 つの AVERAGE() と 1 つの SUM() があり、それぞれが異なるセルに書き込まれます。cells は、次のようにスプレッドシートに書き込まれる ArrayList です。

for (WritableCell cell : cells) {
    ws.addCell(cell);
}

(その周りに try/catch ブロックがありますが、現時点では無関係です。)

編集: ws は WritableWorkbook.getSheet(String name) で取得した WritableSheet です。ws に追加された他のすべてのものは問題なく書かれています:)

ファイルは正常に書き込まれますが、開くと「ファイル エラーです。一部の数値形式が失われた可能性があります」というメッセージが表示されます。上記で書式設定したセルは、Excel ファイルでは書式設定されていません。

Microsoft Excel 2003 SP3 と JExcelApi 2.6.10 を使用しています。

誰でも私を助けてもらえますか?前もって感謝します :)

4

3 に答える 3

3

ここでヘルプを見つけることができます: http://www.docjar.com/html/api/jxl/demo/Write.java.html - 使用

WritableCellFormat cfi3 = new WritableCellFormat
                (NumberFormats.ACCOUNTING_FLOAT);
于 2009-12-28T10:08:38.990 に答える
1
NumberFormat currencyFormat = new NumberFormat(NumberFormat.CURRENCY_DOLLAR + " ###,###.00", NumberFormat.COMPLEX_FORMAT); 
WritableCellFormat lCurrencyFormat = new WritableCellFormat(currencyFormat);
Number currency = new Number(j, cnt, Double.parseDouble(lStr), lCurrencyFormat);
lSheet.addCell(currency);

これは間違いなくあなたの目的を解決します!

于 2010-09-23T14:58:47.640 に答える
0

通貨形式が書き出されていないようです。最初に数式セルを作成してから、通貨形式にフォーマットすることができます。これがあなたを助けることを願っています。

于 2009-09-25T03:12:51.913 に答える