Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

38
Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003
  • date post

    15-Jan-2016
  • Category

    Documents

  • view

    215
  • download

    0

Transcript of Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

Page 1: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

Integrating ColdFusion with Microsoft OfficeSamuel Neff November 19-21, 2003

Page 2: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

2 Integrating ColdFusion with Microsoft Office (SS216W)

About the Presenter

Samuel Neff ([email protected])– Senior Software Engineer at B-Line Express

– Team Macromedia Volunteer for CF

Before CF, three years specific experience in Office dev– Word, Excel, Visual Basic for Applications

Page 3: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

3 Integrating ColdFusion with Microsoft Office (SS216W)

Agenda

Introduction – Why integrate? Automation and Office Web Components OLE Document Properties Microsoft Jet HTML/XML/CSS Hybrid Pure XML Comparisons, alternatives, and resources

Page 4: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

4 Integrating ColdFusion with Microsoft Office (SS216W)

Why integrate with Office?

Consistent reproduction of reports

Page 5: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

5 Integrating ColdFusion with Microsoft Office (SS216W)

Why integrate with Office?

Give users editable documents

Page 6: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

6 Integrating ColdFusion with Microsoft Office (SS216W)

Why integrate with Office?

Leverage features of the Office suite

Page 7: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

7 Integrating ColdFusion with Microsoft Office (SS216W)

Why integrate with Office?

Gain control unavailable with HTML

Page 8: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

8 Integrating ColdFusion with Microsoft Office (SS216W)

Why so many options?

Long lived product Evolution of technologies Techniques intended for specific integration

environments "Flavor of the week" technology

Page 9: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

9 Integrating ColdFusion with Microsoft Office (SS216W)

Why don't we teach just the best?

All options have pros and cons Trade off features, performance, and

complexity Apply most appropriate option for situation

– not one size fits all

Page 10: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

10 Integrating ColdFusion with Microsoft Office (SS216W)

Automation

Launch MS Office on the server Control through COM Most common and most powerful Can do anything an Office user can do Record Macro to learn office model Word, Excel, PowerPoint, 97—2003

Page 11: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

11 Integrating ColdFusion with Microsoft Office (SS216W)

Automation How-To

Start or connect to Excel Create or open a workbook Manipulate the data Save to a file Serve the file

Example, create a pie chart– 01_Autmation_Create_Excel_Chart.cfm

Page 12: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

12 Integrating ColdFusion with Microsoft Office (SS216W)

Automation Example

<cfobject name="xlApp" action="create" class="Excel.Application">

<cfset xlWbs = xlApp.Workbooks><cfset xlWb = xlWbs.add("")><cfset xlWs = xlWb.activeSheet>

<cfset c = xlWs.range("A2")><cfset c.value2 = "Tom"><cfset c = xlWs.range("B2")><cfset c.value2 = 120>

<cfset xlRange = xlWs.range("A1:B4")><cfset xlCharts = xlWb.charts><cfset xlChart = xlCharts.add()><cfset xlChart.chartType = -4102> <cfset xlChart.setSourceData(xlRange, 2)> <cfset xlChart.location(1, "Sales By Employee")>

<cfset xlWb.saveAs(fileName)><cfset xlWb.close()>

<cfcontent type="application/vnd.ms-excel" file="#fileName#">

Page 13: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

13 Integrating ColdFusion with Microsoft Office (SS216W)

Automation Drawbacks

Slowest method Single threaded—not scalable Requires read/write from file system Requires Office and Windows on server Not safe for unattended execution

– "Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when run in this environment."

• http://support.microsoft.com/default.aspx?scid=kb;EN-US;257757

Page 14: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

14 Integrating ColdFusion with Microsoft Office (SS216W)

Office Web Components

COM interface to MS Office data objects Much MS Office functionality Safe for server side use Thread safe – Office XP & 2003 versions only Office 2000—2003 Spreadsheet, PivotTable, Chart

Page 15: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

15 Integrating ColdFusion with Microsoft Office (SS216W)

Office Web Components How-To

Very similar to Automation Create a reference to an OWC components Manipulate the object Save the file Serve the file

Example, create a bar chart– 02_OWC_Chart_Image.cfm

Page 16: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

16 Integrating ColdFusion with Microsoft Office (SS216W)

Office Web Components Example

<cfset chSpace = createObject("com", "OWC10.ChartSpace")>

<cfset chChart = chSpace.Charts.Add()><cfset chChart.Type = 0>

<cfset chSer = chChart.SeriesCollection.Add()><cfset chSer.SetData(1, -1, valueList(salesData.name))> <cfset chSer.SetData(2, -1, valueList(salesData.sales))>

<cfset chSer.Caption = "Sales"><cfset chSpace.Border.Color = -2> <cfset chChart.HasLegend = True><cfset chChart.HasTitle = True>

<cfset chSpace.ExportPicture(absPath, "gif", 600, 512)>

<img src="#relPath#" width="600" height="512" border="0" />

Page 17: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

17 Integrating ColdFusion with Microsoft Office (SS216W)

Office Web Components Drawbacks

Requires Office and Windows on server Office 2000 version not designed for server

use– http://support.microsoft.com/default.aspx?scid

=kb;en-us;Q317316

Page 18: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

18 Integrating ColdFusion with Microsoft Office (SS216W)

OLE Properties

COM interface to any OLE compound document

Simple two-way transfer of small amounts of data

Word, Excel, PowerPoint, 97—2003

Page 19: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

19 Integrating ColdFusion with Microsoft Office (SS216W)

OLE Properties How To

Instantiate a PropertyReader object Get a reference to the document properties Read or set properties as desired Release the COM object

– WARNING: There is no "close" method

– The file is closed when the object is released

– Can only be done on-command in CFMX 6.1

Example, read the author of documents– 03_DSO_List_With_Info.cfm

Page 20: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

20 Integrating ColdFusion with Microsoft Office (SS216W)

OLE Properties Example<cfset fileName = expandPath("files\03_DSO_List\FlashForCFers.ppt")>

<cfobject action="create" type="com" class="DSOleFile.PropertyReader" name="propReader">

<cfset fileProps = propReader.GetDocumentProperties(fileName)> <cfoutput> #fileName# is written by #fileProps.author#</cfoutput>

<cfset releaseComObject(fileProps)><cfset releaseComObject(propReader)>

Page 21: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

21 Integrating ColdFusion with Microsoft Office (SS216W)

OLE Properties Drawbacks

Appropriate only for small specific data Often requires VBA code within the document

template Requires existing file as template for create Requires Windows on the server

Page 22: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

22 Integrating ColdFusion with Microsoft Office (SS216W)

Jet Engine

Familiar database interaction Efficient read and write of data Excel 97—2003

Page 23: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

23 Integrating ColdFusion with Microsoft Office (SS216W)

Jet Engine How-To

Create a datasource to an empty MS Access database– Proxy datasource, used for dynamic connections

Query the Excel file as if it's a database– Specify connection info in the FROM clause

Example, reading uploaded data– 04_Jet_Read.cfm

Page 24: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

24 Integrating ColdFusion with Microsoft Office (SS216W)

Jet Engine Example

<cfset tempFile = expandPath("files\04_Jet_Read_Temp.xls")>

<cffile action = "upload" fileField = "fileName" destination = "#tempFile#" nameConflict = "overwrite">

<cfquery name="excelData" datasource="proxy"> SELECT Salesperson, SalesAmount FROM "Excel 8.0; DATABASE=#tempFile#; HDR=YES".[Sales$]</cfquery>

Page 25: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

25 Integrating ColdFusion with Microsoft Office (SS216W)

Jet Engine Drawbacks

Very specific formatting requirements– Highly subject to user error, particularly reading

Requires existing file as template for create Requires Windows server

– Technically feasible on Unix boxes, but requires special drivers

Page 26: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

26 Integrating ColdFusion with Microsoft Office (SS216W)

HTML/XML/CSS

Fast and familiar technologies Code is more often reusable Create most common documents Easy to create examples of target output

– Save as HTML

Does not require anything more than ColdFusion on server– Even works on Unix servers!

Word, Excel, PowerPoint, 2000—2003

Page 27: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

27 Integrating ColdFusion with Microsoft Office (SS216W)

HTML/XML/CSS How-To

Create HTML Document Include MS Office specific CSS and XML as

needed Serve to HTML

Example, create mailing labels– 05_HTML_Labels.cfm

Page 28: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

28 Integrating ColdFusion with Microsoft Office (SS216W)

HTML/XML/CSS Example<style> @page Section1 { size:8.5in 11.0in; margin:.5in 13.6pt 0in 13.6pt; } div.Section1 { page:Section1; } p { margin:0in 5.3pt 0in 5.3pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; }</style>

<cfcontent type="application/msword" reset="no">

<cfheader name="Content-Disposition" value="attachment; filename=Labels01.doc">

...html...

Page 29: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

29 Integrating ColdFusion with Microsoft Office (SS216W)

HTML/XML/CSS Drawbacks

Limited documentation Can't reproduce all functionality

– Charts, forms, some labels

Some features require Web Archive filter in Office 2000

Page 30: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

30 Integrating ColdFusion with Microsoft Office (SS216W)

XML

Pure XML implementation Create nearly any document Easy to create examples of target output

– Save as XML

Does not require anything more than ColdFusion on server– Even works on Unix servers!

Excel 2002, Word, Excel, PowerPoint 2003

Page 31: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

31 Integrating ColdFusion with Microsoft Office (SS216W)

XML How-To

Generate XML document Serve XML document

Example, sales report– 06_XML_Report.cfm

Page 32: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

32 Integrating ColdFusion with Microsoft Office (SS216W)

XML Example

<?xml version="1.0"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <Worksheet ss:Name="Sales Report"> <Table> <Row> <Cell> <Data ss:Type="String">Tom</Data> </Cell> <Cell> <Data ss:Type="String">Books</Data> </Cell> <Cell> <Data ss:Type="Number">50</Data> </Cell> </Row> </Table> </Worksheet></Workbook>

Page 33: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

33 Integrating ColdFusion with Microsoft Office (SS216W)

XML Drawbacks

Does not support charts For XP, Excel only

– Excel and Word in Office 2003

Custom XML Schema

Page 34: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

34 Integrating ColdFusion with Microsoft Office (SS216W)

XML Mapping

New feature in Office 2003 Use an XML Schema to map data elements to

fields or cells After mapping, import a conforming XML file Fields automatically filled in Data can be changed and re-exported back to

XML Requires a lot of user interaction

Page 35: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

35 Integrating ColdFusion with Microsoft Office (SS216W)

Comparison Matrix

Auto OWC OLE JET HTML XML Map

Safe for server • • • • •

Office on Server • •

Windows on Server • • • •

Read data • • • • •

Write data • • • • • • •

Word • • • • •

Excel • • • • • • •

PowerPoint • • •

Leverage ever-day knowledge • •

Auto-generate examples • • • •

Often requires client-code • •

Subject to user error • •

Page 36: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

36 Integrating ColdFusion with Microsoft Office (SS216W)

Alternatives

RTF– Supported on most word processors

– Marker based text encoding

PDF– Supported by most users

– COM, Executable, XSL-FO

SWF– Supported by most users

– FlashPaper—not server-side yet, but possibly in future

– XSL-FO SWF– RVML (http://www.kinesissoftware.com)

Page 37: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

37 Integrating ColdFusion with Microsoft Office (SS216W)

Resources CF Comet :: Coldfusion & COM

– http://www.cfcomet.com/

INFO: Considerations for Server-Side Automation of Office– http://support.microsoft.com/default.aspx?scid=kb;EN-US;257757

OFF2000: Licensing the Office 2000 Web Components and Office Server Extensions– http://support.microsoft.com/default.aspx?scid=kb;en-us;243006

HOWTO: Use Server-Side Charting to Generate Charts Dynamically– http://support.microsoft.com/default.aspx?scid=kb;en-us;244049

INFO: Limitations of Office 2000 Web Components When Used Server-Side– http://support.microsoft.com/default.aspx?scid=kb;en-us;Q317316

Microsoft Office XP Web Component Toolpack– http://www.microsoft.com/downloads/details.aspx?FamilyId=BEB5D477-2100-4586-A13C-50E56F101720&displaylang=en

Dsofile.exe Lets You Edit Office Document Properties from Visual Basic and ASP– http://support.microsoft.com/default.aspx?scid=kb;en-us;224351

Microsoft® Office HTML and XML Reference– http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoffxml/html/ofxml2k.asp?frame=true

Serving Word (HTML/XML/CSS)– http://www.rewindlife.com/archives/000032.cfm

HOWTO: Format an Excel Workbook While Streaming MIME Content– http://support.microsoft.com/default.aspx?scid=kb;en-us;271572&Product=asp

Microsoft Office 2003 XML– http://www.microsoft.com/seminar/shared/asp/view.asp?url=/seminar/en/20030801DEVT1_76/manifest.xml

XML in Office XP – http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoffpro01/html/XMLOfficeXPPartI.asp

HOWTO: Use ASP to Generate a Rich Text Format (RTF) Document to Stream to Microsoft Word – http://support.microsoft.com/default.aspx?scid=kb;en-us;270906&Product=asp

Page 38: Integrating ColdFusion with Microsoft Office Samuel Neff November 19-21, 2003.

Thank you.