0

次のテスト (主にApache POI ホームページからコピー) を実行して、API が正しく機能していることを確認しようとしました。テストは例外をスローしませんが、生成された Excel ファイルを見ると、色付きのセル (0,0 = A1) は実際には真っ白です。色は適用されません。セル値が正しく設定されました。

を使用してPOI 3.9-20121203 (stable)います。

ここで何が欠けていますか?例が期待どおりに機能しないのはなぜですか?

@Test
public void test() throws FileNotFoundException, IOException
{
    XSSFWorkbook wb = new XSSFWorkbook();
    XSSFSheet sheet = wb.createSheet();
    XSSFRow row = sheet.createRow(0);
    XSSFCell cell = row.createCell( 0);
    cell.setCellValue("custom XSSF colors");

    XSSFCellStyle style1 = wb.createCellStyle();
    style1.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128)));
    style1.setFillPattern(CellStyle.SOLID_FOREGROUND);

    File f = new File("test.xlsx");     
    f.delete();

    FileOutputStream fos = new FileOutputStream(f);     
    wb.write(fos);      
    fos.close();        
}
4

3 に答える 3

4

を作成しましたが、メソッドXSSFCellStyleでセルに割り当てるのを忘れました。CellsetCellStyle

cell.setCellStyle(style1);
于 2013-10-15T17:00:17.097 に答える
1

既存の Excel ファイルを操作するときに注意しなければならないもう 1 つの点があり、セル スタイルの設定が適切に機能しない可能性があります。Cell から取得した CellStyle をシートのデフォルトの CellStyle と常に比較する必要があります。両方が等しい場合は、ワークブックから新しい CellStyle を作成する必要があります。

デフォルトの CellStyle に新しい色を割り当てても、Excel シートに目に見える変化は生じません。

以前のスタイルを上書きせずにセルに色を割り当てる正しい方法は次のとおりです。

// get cell style
XSSFCellStyle style = cell.getCellStyle();

// get default workbook style
XSSFCellStyle defaultStyle = workbook.getCellStyleAt((short) 0)

// if both are equals create new style in workbook
if(style.equals(defaultStyle)) {
    style = workbook.createCellStyle();     
}

// assign color
style.setFillForegroundColor(new XSSFColor(myColor));
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

// set style
cell.setCellStyle(style);
于 2013-10-16T13:22:32.753 に答える
0

XSSFCellStyle のコピーで問題に直面しました。

私の場合、個々の xlsx ファイルを作成する複数の xlsx 入力ストリーム オブジェクトがあります。ただし、すべてのxlsx入力ストリームがその単一のxlsxファイル内の個別のシートである単一のxlsxファイルが必要です。

POI-3.11 バージョンでは 2 つの課題に直面しました。1) 重複したマージ領域が単一のシートに追加されている場合、xlsx ファイルが生成され、問題が発生します。ファイルを開こうとするたびに、ファイルの回復を求められます。

この問題は、マージ リージョンを 1 回だけ追加することで解決しました。

2) 背景色のコピーに関する問題。最終的な xlsx ファイルの一部のフィールドに、ソース ファイルから間違った背景色が入力されています。

この問題は、ソース スタイルをすべてのセルの宛先にコピーすることで解決されました。ソース シートで使用可能なさまざまなスタイルのリストを統合し、ソース セルのスタイルをリストと比較しようとすると、問題が発生しました。

これが役立つことを願っています。

于 2015-08-15T07:59:14.883 に答える