3

この投稿を見ましたが、解決策があるようです。とにかく、ColdFusion 10 を使用して Excel スプレッドシートを生成しています。ただし、SpreadsheetFormatRow() を使用して書式設定する行を渡すと、約 3 しか実行されず、突然停止します。ここに例があります...

ColdFusion コード

<cfscript>

    rowCount = 1;
    headingRows = 4;

    // Create instance of new Spreadsheet
    excelSheet = SpreadsheetNew("ReportName",false); 

    // HEADING (IMAGE) ROW FORMAT
    formatHeadingRow = StructNew();
    formatHeadingRow.fgcolor="blue";        

    // Add rows to fill the header area (must add as many as we are spanning with the above image)
    for (x=0;x<headingRows;x++) {
        SpreadsheetAddRow(excelSheet,"TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST");
        SpreadsheetFormatRow(excelSheet,formatHeadingRow,rowCount);
        rowCount++;
    }

</cfscript>

<!--- stream it to the browser --->
<cfheader name="Content-Disposition" value="inline; filename=reportName.xls">
<cfcontent type="application/vnd.ms-excel" variable="#SpreadSheetReadBinary(excelSheet)#">

これは、結果の Excel シートのスクリーンショットです。

ここに画像の説明を入力

行数とセル数が X になった後に書式設定が停止するのはなぜですか? XML形式の使用に切り替えると

excelSheet = SpreadsheetNew("ReportName",true);

正常に動作します。ただし、色にカスタム パレットを使用しているため、XLSX 形式に切り替えてもうまくいかないと思います。試してから電話すると

palette = excelSheet.getWorkbook().getCustomPalette();

getCustomPalette() メソッドが定義されていないというエラーが表示されます。

coldfusion.runtime.java.MethodSelectionException: The getcustompalette method was not found

誰でもこれを理解するのを手伝ってもらえますか? ありがとうございました!!!

または、XML 形式で動作するため、XLSX (xml 形式) でカスタム パレットを使用する方法の例を誰でも示すことができます。

4

2 に答える 2

3

これは、CF の xls ファイルを扱うときによく見られる問題です。特定の数のセルの後にスタイルの適用を停止するようです。代わりにxlsxに出力することで回避できました。(そうすることで、あなたの問題を複製して「修正」することができました。)

excelSheet = SpreadsheetNew("ReportName",true); 

...

<cfheader name="Content-Disposition" value="inline; filename=reportName.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        variable="#SpreadSheetReadBinary(excelSheet)#">
于 2016-06-14T17:48:56.943 に答える
3

すべての行にまったく同じフォーマットを適用しているため、各行ではなく一度だけ実行してください。ループの後にSpreadsheetFormatCellRangeを使用すると、問題が解決するはずです。

SpreadsheetFormatCellRange(excelSheet
                             , formatHeadingRow
                              , startRow
                              , startCol
                              , endRow
                              , endCol ); 

この問題は、Excel の最大スタイル制限に関連していると思われます。CF はブラック ボックスであるため、実際に作成されるスタイルの数や、それらがどのように適用されるかを正確に知ることは困難です。しかし、私の経験では、知らないうちにスタイルの限界を超えることは非常に簡単です。特に、制限がはるかに低い古い .xls ファイル形式を使用する場合。そのため、代わりに新しい .xlsx 形式を使用することをお勧めします。

getCustomPalette() メソッドは未定義です。

正しい。XSSF には存在しません。他のスレッドで述べたように、独自の色を定義するだけでなく、カスタム パレットが必要な理由はありますか?

于 2016-06-14T18:57:14.877 に答える