Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I...

30
www.devleap.com www.devleap.com Sviluppare Smart Sviluppare Smart Document di Office Document di Office 2003 2003 Introduzione Introduzione Luca Luca Regnicoli Regnicoli MCSD.NET MCSE+I MCDBA MCT MCSD.NET MCSE+I MCDBA MCT [email protected] [email protected]

Transcript of Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I...

Page 1: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.comwww.devleap.com

Sviluppare Smart Sviluppare Smart Document di Office Document di Office

20032003

IntroduzioneIntroduzione

Luca RegnicoliLuca RegnicoliMCSD.NET MCSE+I MCDBA MCTMCSD.NET MCSE+I MCDBA MCT

[email protected]@devleap.it

Page 2: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Chi siamoChi siamo

• www.devleap.itwww.devleap.it• Un gruppo di 5 personeUn gruppo di 5 persone

• Studiare a fondo le tecnologieStudiare a fondo le tecnologie• Capire il “behind the scenes”Capire il “behind the scenes”• Implementare soluzioni realiImplementare soluzioni reali• Confrontarsi con le problematiche realiConfrontarsi con le problematiche reali• Sperimentare nuove ideeSperimentare nuove idee

• Facciamo Corsi, Conferenze, TrainingFacciamo Corsi, Conferenze, Training• Scriviamo libriScriviamo libri

• http://www.devleap.it/fullcontacthttp://www.devleap.it/fullcontact

Page 3: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

AgendaAgenda

• Cos’è una soluzione SmartDocumentCos’è una soluzione SmartDocument• Requisiti di una soluzione Requisiti di una soluzione

SmartDocumentSmartDocument• Architettura di SmartDocumentArchitettura di SmartDocument

• Assembly e ISmartDocumentAssembly e ISmartDocument• ManifestManifest• SchemaSchema

• SecuritySecurity

Page 4: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.comwww.devleap.com

Smart Document BasicsSmart Document Basics

Parte IParte I

Page 5: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Che cos’è una soluzione Che cos’è una soluzione SmartDocument?SmartDocument?

• Soluzione che fornisce informazioni Soluzione che fornisce informazioni contestuali ed azioni all’interno del task contestuali ed azioni all’interno del task panepane

• Scenari di utilizzoScenari di utilizzo• Compilazione di un’offerta commercialeCompilazione di un’offerta commerciale• Generazione di un documento contrattualeGenerazione di un documento contrattuale• Gestione di un budget finanziarioGestione di un budget finanziario

Page 6: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Requisiti di una soluzione Requisiti di una soluzione SmartDocumentSmartDocument

• PC ClientPC Client• Office System 2003 ProfessionalOffice System 2003 Professional

• oppure versioni stand-alone di Word o Excel 2003oppure versioni stand-alone di Word o Excel 2003

• Se utilizziamo .NET Se utilizziamo .NET • .NET Framework 1.1.NET Framework 1.1

• PC SviluppoPC Sviluppo• Office System 2003 ProfessionalOffice System 2003 Professional• Visual Studio .NET 2003Visual Studio .NET 2003

• Oppure un ambiente di sviluppo COMOppure un ambiente di sviluppo COM

• Microsoft Office SmartDocument SDKMicrosoft Office SmartDocument SDK• Non è fondamentale, ma è un utile “contenitore” di Non è fondamentale, ma è un utile “contenitore” di

sample, tool e documentazionesample, tool e documentazione

Page 7: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Architettura Smart DocumentArchitettura Smart Document

XML expansion pack

DLL Assembly

Office document

Schema file

Manifest file

Altri assemblies

Page 8: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

DLL / AssemblyDLL / Assembly

• Deve contenere una classe che implementi Deve contenere una classe che implementi l’interfaccia COM ISmartDocumentl’interfaccia COM ISmartDocument

• Può essere scritto con qualsiasi linguaggio Può essere scritto con qualsiasi linguaggio che sia in grado di implementare un che sia in grado di implementare un interfaccia COMinterfaccia COM• Visual Basic 6.0Visual Basic 6.0• Visual C++ 6.0Visual C++ 6.0• DelphiDelphi• .NET (Interop).NET (Interop)

Page 9: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Interfaccia ISmartDocumentInterfaccia ISmartDocument

•ProprietàProprietà•SmartDocXmlTypeCountSmartDocXmlTypeCount•SmartDocXmlTypeCaptionSmartDocXmlTypeCaption•SmartDocXmlTypeNameSmartDocXmlTypeName•ControlCountControlCount•ControlIDControlID•ControlNameFromIDControlNameFromID•ControlCaptionFromIDControlCaptionFromID•ControlTypeFromIDControlTypeFromID

•MetodiMetodi•SmartDocInitializeSmartDocInitialize•Populate<Populate<ControlTypeControlType>>•On<On<ControlTypeControlType>Change>Change•ImageClickImageClick•InvokeControlInvokeControl

Page 10: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

ISmartDocumentISmartDocument• Non posso invocare direttamente i metodi o le Non posso invocare direttamente i metodi o le

proprietàproprietà• Devo “attendere” che il runtime passi il controllo ai Devo “attendere” che il runtime passi il controllo ai

nostri metodi/proprietànostri metodi/proprietà• ControlCountControlCount• PopulateListOrComboContentPopulateListOrComboContent

• Non pilotiamo direttamente i controlli Non pilotiamo direttamente i controlli • NONO textBox1.Text = “Luca” textBox1.Text = “Luca” • NONO string s = comboBox1.SelectedItem.Text string s = comboBox1.SelectedItem.Text

• Non possiamo gestire esplicitamente eventi sui Non possiamo gestire esplicitamente eventi sui controllicontrolli• NONO private void button1_Click (object o, EventArgs e) private void button1_Click (object o, EventArgs e)

Page 11: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

TerminologiaTerminologia

• Tipi XmlTipi Xml• Contenitori di controlli Contenitori di controlli • Definiti nelle proprietà Definiti nelle proprietà SmartDocXmlType*SmartDocXmlType*

• Controlli Smart DocumentControlli Smart Document• Controlli UI definiti all’interno di tipi XMLControlli UI definiti all’interno di tipi XML• Definiti nelle proprietà Definiti nelle proprietà Control*Control*• Devono avere ID unico all’interno Devono avere ID unico all’interno

dell’intero task panedell’intero task pane

Page 12: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Creare Tipi XmlCreare Tipi Xml• SmartDocXmlCountSmartDocXmlCount

• 1 o n1 o n

• SmartDocXmlNameSmartDocXmlName• NomeSchema#nomeElementoDelloSchema NomeSchema#nomeElementoDelloSchema • Per creare un task pane persistentPer creare un task pane persistent

•#actionPertainsToEntireSchema#actionPertainsToEntireSchema

• SmartDocXmlCaptionSmartDocXmlCaption• ““Esempio di SmartDocument” Esempio di SmartDocument”

Page 13: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Creare controlli Smart Creare controlli Smart DocumentDocument

• ControlCount ControlCount • 22

• ControlID ControlID • Come associare l’ID al controlloCome associare l’ID al controllo• Utilizzare ControlIndex passatoci dal runtimeUtilizzare ControlIndex passatoci dal runtime

• ControlTypeFromIDControlTypeFromID• Il controllo con ID = 1 è una labelIl controllo con ID = 1 è una label• Il controllo con ID = 2 è un pulsanteIl controllo con ID = 2 è un pulsante

Page 14: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Controlli Smart DocumentControlli Smart Document• ImagesImages• HyperlinksHyperlinks• Check boxesCheck boxes• List boxesList boxes• Combo boxesCombo boxes• Radio buttonsRadio buttons• Text boxesText boxes• LabelsLabels• SeparatorsSeparators• ActiveX controlsActiveX controls• Document fragmentsDocument fragments

Page 15: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Gestire clickGestire click

• InvokeControlInvokeControlswitch (ControlID)switch (ControlID)

{{case 2:case 2:

MessageBox.Show (“Pulsante cliccato”); MessageBox.Show (“Pulsante cliccato”);

......

}}

Page 16: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

<manifest xmlns=<manifest xmlns="http://schemas.microsoft.com/office"http://schemas.microsoft.com/office/xmlexpansionpacks/2003">/xmlexpansionpacks/2003">

</manifest></manifest>

<manifest xmlns=<manifest xmlns="http://schemas.microsoft.com/office"http://schemas.microsoft.com/office/xmlexpansionpacks/2003">/xmlexpansionpacks/2003">

</manifest></manifest>

Struttura del file ManifestStruttura del file Manifest<manifest xmlns=<manifest xmlns="http://schemas.microsoft.com/office"http://schemas.microsoft.com/office/xmlexpansionpacks/2003">/xmlexpansionpacks/2003">

descrizione del manifestdescrizione del manifest

<solution><solution>descrizione della solutiondescrizione della solution

</solution></solution>

</manifest></manifest>

<manifest xmlns=<manifest xmlns="http://schemas.microsoft.com/office"http://schemas.microsoft.com/office/xmlexpansionpacks/2003">/xmlexpansionpacks/2003">

descrizione del manifestdescrizione del manifest

<solution><solution>descrizione della solutiondescrizione della solution

</solution></solution>

</manifest></manifest>

Page 17: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Manifest - Elementi fileManifest - Elementi file

<solution><solution>

. . .. . .

<file><file> <type>solutionActionHandler</type> <type>solutionActionHandler</type> <filePath>bin\Codice.dll</filePath> <filePath>bin\Codice.dll</filePath>

<CLSNAME>Libreria.ClasseAzione</CLSNAME><CLSNAME>Libreria.ClasseAzione</CLSNAME> <managed/> <managed/>

</file></file>

</solution></solution>

<solution><solution>

. . .. . .

<file><file> <type>solutionActionHandler</type> <type>solutionActionHandler</type> <filePath>bin\Codice.dll</filePath> <filePath>bin\Codice.dll</filePath>

<CLSNAME>Libreria.ClasseAzione</CLSNAME><CLSNAME>Libreria.ClasseAzione</CLSNAME> <managed/> <managed/>

</file></file>

</solution></solution>

Page 18: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Manifest - Elementi fileManifest - Elementi file

<solution><solution>

. . .. . .

<file><file> <type>schema</type> <type>schema</type> <filePath>bin\Schema.xsd</filePath> <filePath>bin\Schema.xsd</filePath> </file> </file>

</solution></solution>

<solution><solution>

. . .. . .

<file><file> <type>schema</type> <type>schema</type> <filePath>bin\Schema.xsd</filePath> <filePath>bin\Schema.xsd</filePath> </file> </file>

</solution></solution>

Page 19: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

SchemaSchema<xs:schema <xs:schema xmlns=“urn:Devleap.SmartDocuments.Demo"xmlns=“urn:Devleap.SmartDocuments.Demo"xmlns:xs="http://www.w3.org/2001/XMLSchema">xmlns:xs="http://www.w3.org/2001/XMLSchema">

......

<xs:element name="cliente"><xs:element name="cliente"><xs:element name="nome" type="xs:string"/><xs:element name="nome" type="xs:string"/><xs:element name="cognome" type="xs:string"/><xs:element name="cognome" type="xs:string"/><xs:element name="email" type="xs:string" /><xs:element name="email" type="xs:string" />

</xs:element></xs:element>

......

</xs:schema></xs:schema>

<xs:schema <xs:schema xmlns=“urn:Devleap.SmartDocuments.Demo"xmlns=“urn:Devleap.SmartDocuments.Demo"xmlns:xs="http://www.w3.org/2001/XMLSchema">xmlns:xs="http://www.w3.org/2001/XMLSchema">

......

<xs:element name="cliente"><xs:element name="cliente"><xs:element name="nome" type="xs:string"/><xs:element name="nome" type="xs:string"/><xs:element name="cognome" type="xs:string"/><xs:element name="cognome" type="xs:string"/><xs:element name="email" type="xs:string" /><xs:element name="email" type="xs:string" />

</xs:element></xs:element>

......

</xs:schema></xs:schema>

Page 20: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Security Security

• XML expansion pack securityXML expansion pack security• Manifest può essere caricato solo se è stato Manifest può essere caricato solo se è stato

firmato con un certificato digitalefirmato con un certificato digitale• XMLSign.exe [SDK]XMLSign.exe [SDK]• DisableXMLExpansionPackSecurity.reg DisableXMLExpansionPackSecurity.reg

• Solo sulle macchine di sviluppo!Solo sulle macchine di sviluppo!

• Se utilizziamo .NET Se utilizziamo .NET • Office si “fida” di mscoree.dll Office si “fida” di mscoree.dll • Ma non si “fida” del nostro assemblyMa non si “fida” del nostro assembly• L’assembly deve avere permission di FullTrustL’assembly deve avere permission di FullTrust

Page 21: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Collegare Manifest al Collegare Manifest al documentodocumento

• In Word 2003In Word 2003• Menu “Tools” - “Templates and Add-ins”Menu “Tools” - “Templates and Add-ins”

• In Excel 2003In Excel 2003• Menu “Data“ - ”XML” - “XML Expansion Menu “Data“ - ”XML” - “XML Expansion

Packs”Packs”

Page 22: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Sviluppo .NETSviluppo .NET

• Utilizzare i Primary Interop Assembly Utilizzare i Primary Interop Assembly per Officeper Office

• Microsoft.Office.Interop.SmartTag.dllMicrosoft.Office.Interop.SmartTag.dll• ISmartDocumentISmartDocument

• Microsoft.Office.Interop.ExcelMicrosoft.Office.Interop.Excel• Microsoft.Office.Interop.WordMicrosoft.Office.Interop.Word

Page 23: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Primary Interop AssemblyPrimary Interop Assembly

• Come vedere se sono installatiCome vedere se sono installati• Global Assembly CacheGlobal Assembly Cache

Page 24: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Primary Interop AssemblyPrimary Interop Assembly

• Come installare Come installare Microsoft.Office.Interop.SmartTag.dllMicrosoft.Office.Interop.SmartTag.dll

Page 25: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Primary Interop AssemblyPrimary Interop Assembly

• Come installare Come installare Microsoft.Office.Interop.Word.dllMicrosoft.Office.Interop.Word.dll

Page 26: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Primary Interop AssemblyPrimary Interop Assembly

• Come vedere se li stiamo referenziando Come vedere se li stiamo referenziando correttamente da Visual Studio .NETcorrettamente da Visual Studio .NET

Page 27: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Ricapitolando... Step By StepRicapitolando... Step By Step• Aggiungere la reference COM a “Microsoft Smart Tag 2.0 Type Library”Aggiungere la reference COM a “Microsoft Smart Tag 2.0 Type Library”• Implementare l’interfaccia ISmartDocumentImplementare l’interfaccia ISmartDocument• Definire il namespace di baseDefinire il namespace di base• Definire il tipo XML del documento “#actionPertainsToEntireSchema” Definire il tipo XML del documento “#actionPertainsToEntireSchema” • Implementare le proprietà dell’interfaccia ISmartDocumentImplementare le proprietà dell’interfaccia ISmartDocument

• Caption dei controlliCaption dei controlli• Numero di controlliNumero di controlli• Id dei controlliId dei controlli• Tipo di controlliTipo di controlli• Nome dei controlliNome dei controlli• Controllare le azioni dei controlli quali button Controllare le azioni dei controlli quali button • Impostare la caption del task paneImpostare la caption del task pane• Numero di tipi xml del task paneNumero di tipi xml del task pane• Nome dei tipi xml del task paneNome dei tipi xml del task pane

• Creare lo schema xml Creare lo schema xml • Creare il manifestCreare il manifest• Configurare la Code Access Security Configurare la Code Access Security

• L’assembly deve avere diritto di FullTrustL’assembly deve avere diritto di FullTrust• Aggiungere l’xml expansion pack al documentoAggiungere l’xml expansion pack al documento

Page 28: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.comwww.devleap.com

Demo SmartDocumentDemo SmartDocument

Finalmente del codice....Finalmente del codice....

Page 29: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Altre InformazioniAltre Informazioni

• Dove posso ottenere maggiori Dove posso ottenere maggiori informazioniinformazioni• http://www.devleap.it/http://www.devleap.it/• http://msdn.microsoft.com/officehttp://msdn.microsoft.com/office• http://www.microsoft.com/italy/msdn/http://www.microsoft.com/italy/msdn/

• Developer resourcesDeveloper resources• Microsoft Visual Studio.NETMicrosoft Visual Studio.NET• Microsoft .NET Framework SDKMicrosoft .NET Framework SDK• Microsoft Developer NetworkMicrosoft Developer Network• Microsoft Office 2003 Smart Document SDKMicrosoft Office 2003 Smart Document SDK

Page 30: Www.devleap.com Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT luka@devleap.it.

www.devleap.com

Sviluppare Smart Document di Office Sviluppare Smart Document di Office 20032003

I vostri feedback sono importantiI vostri feedback sono importanti•ScriveteciScriveteci

Grazie della partecipazione– A presto

[email protected]