使用Coldfusion SpreadsheetWrite和cfscript创建多个工作表

3

我希望使用CF9、SpreadsheetWrite和cfscript创建一个包含两个工作表的Excel文件。大致如下:

var data= spreadsheetNew( 'data' );
var key= spreadsheetNew( 'key');
spreadsheetAddRow( data, dataInfo );
spreadsheetAddRow( key, keyInfo );      
spreadsheetWrite( data, filePath );
spreadsheetWrite( key, filePath );

我没有找到说明如何将多个工作表合并到一个文件中的文档。这是我找到的内容。它指出可以“将多个工作表写入单个文件”,但是否意味着一次可以有多个工作表不清楚。您可以使用标签来完成此操作,但我需要使用CFScript进行操作。请参考此链接了解更多信息。
<cfspreadsheet action="update"  filename = "filePath" sheetname = "key" > 

如何使用cfscript编写上述基于标记的调用?
1个回答

6

是的,从文档中并不太清楚。SpreadsheetNew 创建一个带有单个工作表的工作簿。要添加其他工作表,请使用SpreadSheetCreateSheet函数。在您可以操作新工作表之前,必须使用SpreadSheetSetActiveSheet将其设置为活动工作表。以下是创建具有两个工作表的工作簿的快速示例:

<cfscript>
    // Create new workbook with one worksheet. 
    // By default this worksheet is active
    Workbook = SpreadsheetNew("Sheet1");
    // Add data to the currently active sheet
    SpreadSheetAddRow(Workbook, "Apples");
    SpreadSheetAddRow(Workbook, "Oranges");


    //Add second worksheet, and make it active
    SpreadSheetCreateSheet(Workbook, "Sheet2");
    // Add data to the second worksheet
    SpreadSheetSetActiveSheet(Workbook, "Sheet2");
    SpreadSheetAddRow(Workbook, "Music");
    SpreadSheetAddRow(Workbook, "Books");

    //Finally, save it to a file
    SpreadSheetWrite(Workbook, "c:/path/to/yourFile.xls", true);
</cfscript>

顺便提一下,我不建议使用<cfspreadsheet action="update">,因为我记得它有点问题。最后我记得它有点bug。


我从来没有理解为什么所有这些示例都以“然后保存到文件”结束,你为什么要这样做呢?如果您想将其发送到输出流(供最终用户保存为文件),则可以执行以下操作:<cfheader name="Content-disposition" value="attachment;filename=#fileName#"> <cfcontent type="application/xls" variable = "#SpreadsheetReadBinary(theSheet)#"> - Richard Tingle
如果你正在进行FTP传输,或者出于归档目的,也许会这么做? - Matt Gutting

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接