2

このコードを実行すると:

<cfscript>
flinstones = "fred,wilma,pebbles";
Workbook = Spreadsheetnew("Workbook");
for (i = 1; i lte listlen(flinstones); i ++) {
ThisFlinstone = ListGetAt(Flinstones, i);
if (ThisFlinstone == "wilma")
SpreadSheetAddRow(Workbook, "#ThisFlinstone#,barney");
else
SpreadSheetAddRow(Workbook, ThisFlinstone);
}

Format = {};
format.rightborder = "thin";
SpreadsheetFormatColumn(WorkBook, Format, 2);
MYfile = "d:\dw\dwtest\dan\abc.xls";
writedump(format);

</cfscript>

<cfspreadsheet action="write" filename="#MYFile#" name="Workbook"  
    sheet=1 sheetname="flinstones" overwrite=true>

3 行のワークシートが表示されることを期待しています。2 番目の行には 2 つの列があり、セルには wilma と barney が含まれます。これまでのところ、私が期待していることがわかります。また、右側の境界線を持つ列 B が表示されることも期待しています。実際にはセル B2 が右側の境界線で表示されます。

これを変更すると:

SpreadSheetAddRow(Workbook, ThisFlinstone);

これに

SpreadSheetAddRow(Workbook, "#ThisFlinstone#, ");

列 B の最初の 3 行に右側の境界線が表示されます。

列 B のすべてに右側の境界線を適用する方法はありますか?

4

1 に答える 1

1

アップデート:

ダンがコメントで述べたように、私は質問を読み違えました。明確にするために、列全体に境界線を追加することは、最後に確認した POI ではサポートされていませんでした。列全体に境界線を表示する唯一の方法は、最初にその列のすべてのセルにデータを入力することです。値を明示的に設定するか、最大行番号SpreadsheetFormatCellRange(sheet, format, 1, 2, maxRow, 2)を使用して。これは機能しますが、望ましくない副作用があるため、お勧めしません。


列 B のすべてに右側の境界線を適用する方法はありますか?

簡潔な答え:

はい、すでに発見したことを行うことで、すべてのセル ieB1と値を最初に指定しますB2B3単なる空白または空の文字列であっても。これにより、3 つのセルすべてに境界線が作成されます。

更新 1: CF 9.0.1 を使用している場合、別のオプションはSpreadsheetFormatCellRange. ほとんどのスプレッドシート関数とは異なり、最初に存在しないセルが自動的に作成されます。

    <cfset SpreadsheetFormatCellRange(Workbook, Format, 1, 2, 3, 2)>

より長い答え:

フォーマットを適用するには、POI がオブジェクトと呼ぶものが必要ですCell。新しいワークシートを作成すると、「セル」がまったくなく、完全に空白になります。ほとんどの場合、CF は、 、 などのさまざまな関数のいずれかで値を設定した場合にのみオブジェクトをCell作成します。(以下の例を参照)。元のコードは、列 B に 1 つの値のみを設定します。したがって、単一の 、つまり. は既存のセルのみをフォーマットするため、境界線は でのみ表示されます。SpreadSheetSetCellValueSpreadSheetAddRowCellB2SpreadsheetFormatColumnB2

<!--- blank sheet with no CELLS --->
<cfset Workbook = Spreadsheetnew() />
<cfset SpreadSheetWrite(Workbook, "c:/test.xls", true) />
<cfspreadsheet action="read" src="c:/test.xls" query="qValues" />
<cfdump var="#qValues#" label="No cells exist yet" />

<!--- setting one value, creates one CELL --->
<cfset Workbook = Spreadsheetnew() />
<cfset SpreadSheetAddRow(Workbook, "Fred") />
<cfset SpreadSheetWrite(Workbook, "c:/test.xls", true) />
<cfspreadsheet action="read" src="c:/test.xls" query="qValues" />
<cfdump var="#qValues#" label="Creates a single cell" />

<!--- setting two values, creates two CELL's --->
<cfset Workbook = Spreadsheetnew() />
<cfset SpreadSheetAddRow(Workbook, "Fred, ") />
<cfset SpreadSheetWrite(Workbook, "c:/test.xls", true) />
<cfspreadsheet action="read" src="c:/test.xls" query="qValues" />
<cfdump var="#qValues#" label="Creates two cells" />
于 2013-02-25T19:24:06.657 に答える