Adobe-ColdFusion读写Microsoft-Office-Excel数据_第1页
Adobe-ColdFusion读写Microsoft-Office-Excel数据_第2页
Adobe-ColdFusion读写Microsoft-Office-Excel数据_第3页
Adobe-ColdFusion读写Microsoft-Office-Excel数据_第4页
Adobe-ColdFusion读写Microsoft-Office-Excel数据_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Adobe ColdFusion读写Microsoft Office Excel数据 Adobe公司最新推出的ColdFusion9新增了很多令人兴奋地功能,这些功能具体体现在新出现的标签(Tag)上。比如,与微软Office文件的互操作性(CFSPREADSHEET),与其最新开发工具ColdFusion Builder的紧密集成,对象-关系映射(ORM),与微软Office SharePoint的集成(CFSHAREPOINT),ColdFusion作为服务,Adobe AIR本地/远程数据库同步,服务管理器以及对门户标准的嵌入支持等。笔者这几篇随笔简单介绍下ColdFusion9与Exc

2、el的交互操作。首先做一下准备工作,安装ColdFusion9和ColdFusion Builder, 添加ColdFusion Server并且配置好相关数据源。从CFBuilder中RDS Dateview观测自带的示例数据库可以验证连接正常。如图1.图 1         然后还需要一个示例Excel文件Sales.xls。不妨随意造些数据,如图2. 推荐精选图 2接着新建ColdFusion Project,姑且命名为MyFirstCFPjt, 从项目中添加一个文件夹spreadsheet。从新建的spre

3、adsheet中添加一个新的ColdFusion Page,由于要先做一个读取操作的Demo, 因此将其命名为read.cfm. 具体代码很简单,只需要将下面的写到新建的read.cfm中即可用内置的浏览器进行浏览操作了。 view source print?1<!- Read as query -> 2<cfspreadsheet 3    action = "read"4    src = "Sales.xls"5  

4、60; query = "myQuery"> 6<cfdump var = "#myQuery#">以上代码主要是将Sales.xls里的数据读取到一个query中。然后可以在程序其他地方应用这个query中的数据。cfdump标签用来将特定的ColdFusion对象的详细信息展示出来。在CFBuilder内置的IE浏览器中效果如图3.图 3     自然,我们也可以以一种开发人员更加熟悉的方式使用查询结果,使用方法同普通的查询。将下面的代码添加到read.cfm中view s

5、ource 推荐精选print?01<P align=left> </P><P align=left><!- Html content -> 02<html> 03    <head> 04        <title>ColdFusion9 Excel Read Demo</title> 05    </head> 0

6、6    <body> 07        <h2>Demo of retriving data from Excel files</h2> 08        <table border=1> 09            <

7、tr colspan=5 border=0> 10                <th>Sales detail</th> 11            </tr> 12         

8、   <cfoutput query="myQuery"> 13            <tr> 14                <td>#myQuery.COL_1#</td> 15   

9、;             <td>#myQuery.COL_2#</td> 16                <td>#myQuery.COL_3#</td> 17        

10、;        <td>#myQuery.COL_4#</td> 18                <td>#myQuery.COL_5#</td> 19            </

11、tr> 20            </cfoutput> 21        </table>   22    </body> 23</html> 24  25</P>在浏览器中浏览查看,效果如图4. 推荐精选图 4  &

12、#160;    要想获取某个特定单元格中的数据并将其放入特定变量,利用上面提到的查询方式很容易实现,但CF9提供了一种更加简便的方式,只需要设置cfspreadsheet标签的rows和columns属性即可。将下面代码放入read.cfm, 在浏览器中浏览。此时要注意设置format属性。view source print?01<!- Read specific cell to variable -> 02<cfspreadsheet 03    action = "read"04&

13、#160;   format="csv"05    src = "Sales.xls"06    name = "myVar"07    sheet = "1"08    rows = "3-5"09    columns = "3"> 10&

14、lt;cfoutput>#myVar#</cfoutput>       这样就可以像使用普通ColdFusion变量一样使用从Excel文件特定单元格中获取的数据了。推荐精选上一篇随笔主要简单演示了数据读取操作,要想编辑Excel中数据的功能也很容易实现。代码几乎同读取操作一样,显著的不同是要将cfspreadsheet标签的action属性设置为write,设定所要编辑的单元格位置信息并且调用spreadsheetSetCellValue方法进行编辑。我们继续使用上一篇随笔中的那个示例Excel文件Sales.x

15、ls, 如图1.图 1     注意这个文件第2行第2列的数字现在是“50000”。新建一个ColdFusion Page, 并将下面的代码添加进去。view source print?01<!- Read spreadsheet -> 02<cfspreadsheet action="read"03    src="Sales.xls"04    name="sObj"> 05&#

16、160; 06<!- Set cell value -> 07<cfset spreadsheetSetCellValue(sObj, 60000, 2, 2)> 08  09<!- Write spreadsheet -> 10<cfspreadsheet action="write"11    overwrite="true"12    filename="Sales.xls"13

17、    name="sObj">推荐精选  在浏览器中运行。然后再次打开Sales.xls文件。可以发现第2行第2列数据已经变成了“60000”。如图2.图 2前面的示例用了最简单的方式介绍了用ColdFusion编辑Excel文件的方式。为了使操作更加灵活方便,笔者再来演示一个稍微复杂的例子。首先新建一个ColdFusion Page, 与第一篇随笔对应,取名为write.cfm. 添加下面的代码用来新建一个cfform, 注意将form的action属性设置为"#CGI.script_name#"

18、;. view source print?01<!- Form used to set entry infomation -> 02<h3>Set specific cell with specific value</h3> 03<cfform action="#CGI.script_name#"> 04<br> 05Region:  06<cfselect name="row"> 07    <option value=&qu

19、ot;2">Northeast</option> 08    <option value="3">East</option> 09    <option value="4">Central</option> 10    <option value="5">South</option> 11  

20、60; <option value="6">Southwest</option> 12    <option value="7">West</option> 13</cfselect> 14<br> 推荐精选15<br> 16Quarter:  17<cfselect name="col"> 18    <option value=&q

21、uot;2">Q1</option> 19    <option value="3">Q2</option> 20    <option value="4">Q3</option> 21    <option value="5">Q4</option> 22</cfselect> 23<br>

22、24<br> 25Sales: $<cfinput type="text" name="sales" required="true" validate="integer"> 26<br> 27<br> 28<cfinput type="submit" name="btnSave" value="Save"> 29<br> 30</cfform>  

23、60;  在浏览器中运行一下,看到效果如图3, 其外观与普通html form没有什么区别。推荐精选图 3接下来在页面顶部定义三个变量,分别用来表示要设置的单元格行,列,值信息。view source print?1<!- Init vars -> 2<cfparam name="FORM.row" default=""> 3<cfparam name="FORM.col" default=""> 4<cfparam name="FORM.sa

24、les" default="">最后添加前面讲过的读写方法,来实现对Excel文件的操作。view source print?01<!- Form submitted -> 02<cfif FORM.row NEQ ""03    AND FORM.col NEQ ""04    AND FORM.sales NEQ ""> 05    <!- Rea

25、d spreadsheet -> 06    <cfspreadsheet action="read"07        src="Sales.xls"08        name="sObj"> 09    <!- Set cell value -> 10 

26、   <cfset spreadsheetSetCellValue(sObj, FORM.sales, FORM.row, FORM.col)> 11    <!- Write spreadsheet -> 12    <cfspreadsheet action="write"13        overwrite="true"14

27、60;       filename="Sales.xls"15        name="sObj"> 16</cfif>这样,就可以对特定的单元格的数据进行编辑了。推荐精选在实际应用中,除了对已有Excel表单进行读写操作外,我们很有可能会需要将系统数据导出到Excel文件。导出Excel实质上是利用现有的数据新建一个Excel文件。ColdFusion9很容易实现这个功能。下面笔者将

28、通过小示例来演示一下。首先新建一个ColdFusion Page, create.cfm. 将下面的代码添加进去。view source print?01<!- Get data -> 02<cfquery name="arts" datasource="cfartgallery"> 03    SELECT *  04    FROM ART 05</cfquery> 06  07<!- Create

29、spreadsheet -> 08<cfspreadsheet action="write"09    filename="Arts.xls"10    query="arts"11    overwrite="true">此处cfquery标签的datasource属性为安装ColdFusion9时自带的示例数据源,cfartgallery. 利用ColdFusion Buil

30、der的RDS Query Viewer可以对其中数据进行查看,先来看一下ART表中的数据,如图1. 推荐精选图 1从代码中可以看出其功能是将ART表中的内容读入到arts查询中,然后写入到一个新的Excel文件Arts.xls. overwrite=”true”保证如果Excel表单不存在则创建,存在则覆盖。在浏览器中运行,可以看到当前目录下多了一个Excel文件,效果如图2. 图 2推荐精选上面的示例仅仅是将数据库中的数据通过ColdFusion查询写入到一个新的Excel表单中。这是最原始的方法,其中并没有在意新建的Excel表单的美观程度,也没有我们很想要的汇总等等脚注信息,这可不是一

31、个“制作精良”的表单。其实ColdFusion提供了好多方法可以更加灵活的对要写入Excel的数据进行处理,包括添加表单属性,设置格式,设置公式等等。为了演示这些功能,新建一个ColdFusion Page, decorate.cfm. 这里将再次用第一篇随笔中那个造出来的数据,如图3.图 3要完成这个Demo, 我们采用下面的步骤(有些步骤并不是必须的,当然这些也可以不是所有的步骤)。步骤1把数据读取到一个查询中备用。实现方法是将下面的代码添加到decorate.cfm. view source print?1<!- Read as query -> 2<cfspreads

32、heet 3    action="read"4    src="Sales.xls"5    query="myQuery">步骤2利用spreadsheetNew方法新建一个表单对象:view source print?1<!- Create new spreadsheet -> 2<cfset sObj=spreadsheetNew()>步骤3为这个新建的表单添加一些属性信息:推荐

33、精选view source print?1<!- Set sheet properties -> 2<cfset info=StructNew()> 3<cfset info.title="Sales Detail"> 4<cfset info.author="spoony"> 5<cfset ments="comments for the sales detail sheet"> 6<cfset spreadsheetAddInfo(sObj, info)>步骤

34、4为表单添加一个标题,并进行以下修饰以便使它能与内容区分出来:view source print?1<!- Create and format header row -> 2<cfset spreadsheetAddRow(sObj, "Sales detail: ")> 3<cfset spreadsheetFormatRow(sObj, bold="true", italic="true", fontsize="12", 1)>步骤5将步骤1中获取的数据填入到新建的表单对象中

35、:view source print?1<!- Add data from query -> 2<cfset spreadsheetAddRows(sObj, myQuery)> 3<cfset spreadsheetFormatRow(sObj, bold="true", alignment="center", 2)>步骤6定义一些变量以便以后使用。注意公式信息同Excel中语法是一致的:view source print?1<!- Figure out row for formula, 2 afer data

36、 -> 2<cfset rowDataStart=2> 3<cfset rowDataEnd=myQuery.recordcount+1> 4<cfset rowTotal=rowDataEnd+2> 推荐精选5<cfset totalFormulaB="SUM(B#rowDataStart#:B#rowDataEnd#)"> 6<cfset totalFormulaC="SUM(C#rowDataStart#:C#rowDataEnd#)"> 7<cfset totalFormulaD="SUM(D#rowDataStart#:D#rowDataEnd#)"> 8<cfset totalFormulaE="SUM(E#rowDataStart#:E#rowDataEnd#)">步骤7设置汇总单元格,并应用步骤6中的公式计算:view source print?1<!- Add total formula -> 2<cfset spreadsheetSetCellValue(sObj, &q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论