Adobe ColdFusion读写Microsoft Office Excel数据(1)
Adobe公司最新推出的ColdFusion9新增了很多令人兴奋地功能,这些功能具体体现在新出现的标签(Tag)上。比如,与微软Office文件的互操作性(CFSPREADSHEET),与其最新开发工具ColdFusion Builder的紧密集成,对象-关系映射(ORM),与微软Office SharePoint的集成(CFSHAREPOINT),ColdFusion作为服务,Adobe AIR本地/远程数据库同步,服务管理器以及对门户标准的嵌入支持等。
笔者这几篇随笔简单介绍下ColdFusion9与Excel的交互操作。
首先做一下准备工作,安装ColdFusion9和ColdFusion Builder, 添加ColdFusion Server并且配置好相关数据源。从CFBuilder中RDS Dateview观测自带的示例数据库可以验证连接正常。如图1.
图 1
然后还需要一个示例Excel文件Sales.xls。不妨随意造些数据,如图2.
图 2
接着新建ColdFusion Project,姑且命名为MyFirstCFPjt, 从项目中添加一个文件夹spreadsheet。从新建的spreadsheet中添加一个新的ColdFusion Page,由于要先做一个读取操作的Demo, 因此将其命名为read.cfm. 具体代码很简单,只需要将下面的写到新建的read.cfm中即可用内置的浏览器进行浏览操作了。
<!--- Read as query ---> <cfspreadsheet action = "read" src = "Sales.xls" query = "myQuery"> <cfdump var = "#myQuery#">
以上代码主要是将Sales.xls里的数据读取到一个query中。然后可以在程序其他地方应用这个query中的数据。cfdump标签用来将特定的ColdFusion对象的详细信息展示出来。
在CFBuilder内置的IE浏览器中效果如图3.
图 3
自然,我们也可以以一种开发人员更加熟悉的方式使用查询结果,使用方法同普通的查询。将下面的代码添加到read.cfm中
<!--- Html content ---> <html> <head> <title>ColdFusion9 Excel Read Demo</title> </head> <body> <h2>Demo of retriving data from Excel files</h2> <table border=1> <tr colspan=5 border=0> <th>Sales detail</th> </tr> <cfoutput query="myQuery"> <tr> <td>#myQuery.COL_1#</td> <td>#myQuery.COL_2#</td> <td>#myQuery.COL_3#</td> <td>#myQuery.COL_4#</td> <td>#myQuery.COL_5#</td> </tr> </cfoutput> </table> </body> </html>
在浏览器中浏览查看,效果如图4.
图 4
要想获取某个特定单元格中的数据并将其放入特定变量,利用上面提到的查询方式很容易实现,但CF9提供了一种更加简便的方式,只需要设置cfspreadsheet标签的rows和columns属性即可。将下面代码放入read.cfm, 在浏览器中浏览。此时要注意设置format属性。
<!--- Read specific cell to variable ---> <cfspreadsheet action = "read" format="csv" src = "Sales.xls" name = "myVar" sheet = "1" rows = "3-5" columns = "3"> <cfoutput>#myVar#</cfoutput>
这样就可以像使用普通ColdFusion变量一样使用从Excel文件特定单元格中获取的数据了。
人每天要做三件事,第一件是微笑,第二件是欢笑,第三件是大笑。