SpreadsheetFormatColumn()右边框

时间:2013-02-25 16:00:22

标签: coldfusion coldfusion-9 cfspreadsheet

当我运行此代码时:

<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>

我希望看到一个包含三行的工作表。第二行将有两列,单元格中有wilma和barney。到目前为止,我看到了我的期望。我还希望看到B栏右手边框。我实际上看到右边界的B2格式。

如果我改变了这个:

SpreadSheetAddRow(Workbook, ThisFlinstone);

到这个

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

我看到B列的前三行有右边框。

有没有办法让右手边框适用于所有B列?

1 个答案:

答案 0 :(得分:1)

<强>更新

丹在评论中提到,我误解了这个问题。为了澄清,我最后检查的POI不支持向整个列添加边框。使边框显示在整个列上的唯一方法是首先填充该列中的每个单元格。通过明确设置值或使用SpreadsheetFormatCellRange(sheet, format, 1, 2, maxRow, 2) B1来设置值。虽然这确实有效,但我不推荐它,因为它有一些maximum row number


  

有没有办法让右手边框适用于所有B列?

简答:

是的,通过执行您已经发现的内容:首先为所有单元格B2B3 <cfset SpreadsheetFormatCellRange(Workbook, Format, 1, 2, 3, 2)> 赋予一个值。即使它只是一个空白或空字符串。这将在所有三个单元格上创建边框。

更新1:如果您使用的是CF 9.0.1,则另一个选项是undesirable side effects。与大多数电子表格函数不同,它首先自动创建不存在的单元格:

Cell

更长的回答:

要应用格式,您需要POI调用SpreadsheetFormatCellRange对象。创建新工作表时,它是完全空白的,没有任何“单元格”。在大多数情况下,当您使用各种函数之一(即SpreadSheetSetCellValueSpreadSheetAddRow等等设置值时,CF仅创建Cell对象。 (见下面的例子)。您的原始代码仅在B列中设置一个值。因此,它只创建一个B2,即SpreadsheetFormatColumnB2仅格式化现有单元格,因此边框仅在<!--- 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" /> 中可见。

{{1}}