Adobe ColdFusion读写Microsoft Office Excel数据(2)
上一篇随笔主要简单演示了数据读取操作,要想编辑Excel中数据的功能也很容易实现。代码几乎同读取操作一样,显著的不同是要将cfspreadsheet标签的action属性设置为write,设定所要编辑的单元格位置信息并且调用spreadsheetSetCellValue方法进行编辑。
我们继续使用上一篇随笔中的那个示例Excel文件Sales.xls, 如图1.
图 1
注意这个文件第2行第2列的数字现在是“50000”。新建一个ColdFusion Page, 并将下面的代码添加进去。
<!--- Read spreadsheet ---> <cfspreadsheet action="read" src="Sales.xls" name="sObj"> <!--- Set cell value ---> <cfset spreadsheetSetCellValue(sObj, 60000, 2, 2)> <!--- Write spreadsheet ---> <cfspreadsheet action="write" overwrite="true" filename="Sales.xls" name="sObj">
在浏览器中运行。然后再次打开Sales.xls文件。可以发现第2行第2列数据已经变成了“60000”。如图2.
图 2
前面的示例用了最简单的方式介绍了用ColdFusion编辑Excel文件的方式。为了使操作更加灵活方便,笔者再来演示一个稍微复杂的例子。
首先新建一个ColdFusion Page, 与第一篇随笔对应,取名为write.cfm. 添加下面的代码用来新建一个cfform, 注意将form的action属性设置为"#CGI.script_name#".
<!--- Form used to set entry infomation ---> <h3>Set specific cell with specific value</h3> <cfform action="#CGI.script_name#"> <br> Region: <cfselect name="row"> <option value="2">Northeast</option> <option value="3">East</option> <option value="4">Central</option> <option value="5">South</option> <option value="6">Southwest</option> <option value="7">West</option> </cfselect> <br> <br> Quarter: <cfselect name="col"> <option value="2">Q1</option> <option value="3">Q2</option> <option value="4">Q3</option> <option value="5">Q4</option> </cfselect> <br> <br> Sales: $<cfinput type="text" name="sales" required="true" validate="integer"> <br> <br> <cfinput type="submit" name="btnSave" value="Save"> <br> </cfform>
在浏览器中运行一下,看到效果如图3, 其外观与普通html form没有什么区别。
图 3
接下来在页面顶部定义三个变量,分别用来表示要设置的单元格行,列,值信息。
<!--- Init vars ---> <cfparam name="FORM.row" default=""> <cfparam name="FORM.col" default=""> <cfparam name="FORM.sales" default="">
最后添加前面讲过的读写方法,来实现对Excel文件的操作。
<!--- Form submitted ---> <cfif FORM.row NEQ "" AND FORM.col NEQ "" AND FORM.sales NEQ ""> <!--- Read spreadsheet ---> <cfspreadsheet action="read" src="Sales.xls" name="sObj"> <!--- Set cell value ---> <cfset spreadsheetSetCellValue(sObj, FORM.sales, FORM.row, FORM.col)> <!--- Write spreadsheet ---> <cfspreadsheet action="write" overwrite="true" filename="Sales.xls" name="sObj"> </cfif>
这样,就可以对特定的单元格的数据进行编辑了。
人每天要做三件事,第一件是微笑,第二件是欢笑,第三件是大笑。