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>

  这样,就可以对特定的单元格的数据进行编辑了。

posted @ 2010-01-22 21:39  spoony  阅读(931)  评论(0编辑  收藏  举报