Kezdőlap > .NET, C#, Office > Word Add-in készítés

Word Add-in készítés

2012. január 25. szerda Hozzászólás Go to comments

Feladat ismertetése

Ebben a feladatban egy olyan Word Add-in-t fogunk készíteni, amelynek a segítségével a felhasználó a dokumentumot gyorsan kimentheti Adobe PDF formátumba és / vagy Microsoft XPS formátumba.

FIGYELEM! A következő demo azoknál, akik Office 2007-et használnak, csak akkor fog működni, ha az Office Service Pack 2 telepítve van!

Eredmény képekben

image

Add-in elkészítése

Indítsuk el a Visual Studio 2010 Ultimate változatát, majd kattintsunk File -> New -> Project… menüpontra! A megjelenő ablakban állítsuk be az alábbiakat:

A jobb oldali menüből válasszuk ki a Visual C# elemet, azon belül is az Office -> 2010 elemet, ezután a template listából válasszuk ki a Word 2010 Add-in-t! Adjuk neki az WordExportAddIn projekt nevet, majd kattintsunk az OK gombra (Figyeljünk arra, hogy a .NET Framework 4 legyen kiválasztva! A feladatokat meglehet ugyan oldani .NET 3.5 el is csak sokkal körülményesebb módon!)!

image

Első körben a Word Ribbon menüjéhez szeretnénk hozzáadni saját menüpontot. A Solution Explorerben kattintsunk jobb egérgombbal a projektre, majd az Add -> New Item menüpontra! Válasszuk ki a megjelenő ablakban a Ribbon (Visual Designer) –t és kattintsunk, az Add gombra!

image

Ekkor a Visual Studio betölti a Ribbon Designer-t. Készítsük el az alábbi felhasználói felületet:

image

A Ribbon Tab Label-jének szövegét állítsuk át „Export”-ra, a Ribbon Group Label-jét pedig „Formátumokra”. Adjunk hozzá két gombot, és mind a két gombnak állítsuk be a ControlSize tulajdonságát RibbonControlSizeLarge-ra. Az első gomb neve legyen a btnPdf és ennek a gombnak az Image tulajdonságához adjunk egy PDF logót (Amelyet akár innen is le lehet tölteni), a második gomb neve pedig legyen a btnXps és az Image tulajdonságához adjunk egy XPS logót (Amelyet akár innen is le lehet tölteni). A felhasználói felületünk tehát elkészült, itt az ideje megírni az üzleti logikánkat is.

Kattintsunk kétszer a PDF gombra, majd az eseményvezérlőjébe írjuk be az alábbi kódsort:

Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat("D:\\Event.pdf", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);

Ezzel a sorral mondjuk meg, hogy az adott dokumentumot szeretnénk exportálni egy adott helyre, majd a WdExportFormat enumeráció segítségével megmondjuk, hogy PDF formátumba szeretnénk kimenteni az adott dokumentumot.

Az útvonal beállításánál figyeljünk oda, hogy az adott útvonal létezzen, és legyen írási jogunk rá!

Ugyanezt tegyük meg az XPS-es gombjával is: kattintsunk kétszer rá, majd az eseményvezérlőjébe írjuk a következő sort:

Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat("D:\\Event.xps", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatXPS);

Ez a sor ugyan azt csinálja, mint a fentebbi, csak épp XPS formátumba menti ki a dokumentumot.

Indítsuk, el az add-int (F5), ekkor betöltődik a Word, és ha miden helyesen van beállítva, akkor a Ribbon menüjében megjelenik az Export Tab fül. Írjunk valamit a szövegmezőbe, majd kattintsunk a PDF majd az XPS gombokra! Vizuális visszajelzést nem fogunk kapni, ezért nézzük meg, hogy az adott útvonalon megtalálhatók-e a dokumentumok. Ha igen, akkor sikerült a mentés, és bezárhatjuk a dokumentumot.

Ha esetlegesen nem töltődne be az add-in, akkor a dokumentum függelékében megoldási javaslatokat is találsz.

Az alkalmazás igazi funkciója elkészült, de szeretnénk méginkább testre szabni: például aimage felhasználó adja meg a cél útvonalat, és ha a mentés sikerült, akkor egy MessageBox figyelmeztessen minket erről. Ezek a funkciók nem Office specifikusak, hisz a SaveFileDialog illetve a MessageBox a System.Windows.Forms névtérben találhatóak. Kattintsunk jobb egérgombbal a Solution Explorerben található Refrences-re, majd a megjelenő helyi menüben válasszuk ki az Add Reference… menüpontot! A megjelenő ablakban válasszuk a .NET fület és keressük ki a System.Windows.Forms komponens nevet. Ezután kattintsunk az OK gombra, és a usingok közé töltsük be a névteret!

using System.Windows.Forms;

Majd a két gomb eseményvezérlőjét írjuk át az alábbi módon (kezdjük először a btnPdf-el):

SaveFileDialog sd = new SaveFileDialog();

sd.Filter = "Adobe PDF | *.pdf";

sd.DefaultExt = "pdf";

if (sd.ShowDialog() == DialogResult.OK)

{

    Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat(sd.FileName, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);

    MessageBox.Show("Exportálás végrehjatva","Export Add-in",  MessageBoxButtons.OK, MessageBoxIcon.Information);

}

Az imént példányosítottunk egy klasszikus Windows Formsos SaveFileDialog-ot, amelynek a Fileter és Default Extension tulajdonságát beállítottuk PDF formátumra. Meghívtuk a ShowDialog metódusát, és ha ez a metódus (DialogResult) „OK”-val tér vissza, akkor a megadott helyre elmentjük a dokumentumot és értesítjük a felhasználót, hogy az exportálás rendben lezajlott.

Ugyanezt csináljuk a btnXps esetében is annyi különbséggel, hogy a Filter és Default Extension tulajdonságát XPS formátumnak megfelelőre állítjuk be.

SaveFileDialog sd = new SaveFileDialog();

sd.Filter = "XPS | *.xps";

sd.DefaultExt = "xps";

if (sd.ShowDialog() == DialogResult.OK)

{

    Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat(sd.FileName, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatXPS);

    MessageBox.Show("Exportálás végrehjatva", "Export Add-in", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

Itt az ideje kipróbálni az alkalmazásunkat. Indítsuk el a bővítményt (F5,) ekkor betöltődik a Word és a mi általunk írt add-in.

Ha esetlegesen nem töltődne be az add-in, akkor a dokumentum függelékében megoldási javaslatokat is találsz.

Amennyiben betöltődött a Word és az Add-in–unk, akkor a szerkesztő mezőbe írjuk a következőt, és nyomjunk egy Enter-t:

=lorem()

Ebben az esetben a „lorem ipsum” szöveget fogjuk kapni (Amennyiben a két zárójel közé írunk egy egész számot, akkor meghatározhatjuk, hogy hány sort szeretnénk ebből a szövegből legenerálni.).

Most, hogy a dokumentumban tartalom, kattintsunk az Export tab fülön a PDF gombra, és a mentés ablakban válasszuk ki azt az útvonalat, ahová menteni szeretnénk a dokumentumot. Ugyanezt tegyük meg az XPS gombbal is!

image

Ezt követően keressük ki a fájlrendszeren a dokumentumokat, és ha minden jól ment, akkor látható, hogy az exportálás sikeresen lezajlott.

image

Ha most egy teljesen új Word dokumentumot nyitunk a Start menüből, akkor látni fogjuk, hogy be fogja tölteni a mi export add-in-unkat. Vagyis mostantól mindig, amikor megnyitunk egy Word alkalmazást, az Add-in-unkat befogja tölteni. A Word Document template-nél csak az adott dokumentum funkcionalitását egészítettük ki, míg itt magát a Word alkalmazás egészét.

Felmerülhet a kérdés, hogy fejlesztési időben hogy tudjuk eltávolítani az adott alkalmazást aimage Wordből?

Egyszerűen a Visual Studio-ban kattintsunk jobb egérgombbal a Solution Exploreren a projektre és válasszuk a Clean menüpontot, ezt követően már nem fog betöltődni az adott bővítmény.

(A bővítményt manuálisan is eltávolíthatjuk a Word-ből)

Ezen az egyszerű példán keresztül is látható volt, hogy milyen egyszerű a Word-höz saját add-int írni. Nincs semmi varázslat, felhasználhatjuk a Word apiját, és ha szükséges akkár Windows Formsos koponenseket is felhasználhatunk.

Függelék

Bizonyos esetekben, amikor elindítjuk a Word-öt, a bővítményünk nem töltődik be, csak egyszerűen elindul a Word. Előfordulhat olykor az is, hogy magát a Template-et sem engedi betölteni. Ilyenkor az alábbi lépésekkel lehet elhárítani a hibát:

Indítsunk el egy Word alkalmazást! File -> Options -> Add-Ins. Az ablak alján válasszuk ki a COM Add-ins –t, és kattintsunk a Go gombra!

image

A megjelenő COM Add-Ins ablakban a Visual Studio Tools for Office Design-Time Adapter for Word legyen bepipálva (Értelemszerűen Excelnél vagy a többi Office alkalmazásnál szintén)!

image

Másik gyakori eset, hogy elindítjuk a bővítményünket, de nem töltődik be. Ez több okból is előfordulhat, de a leggyakoribb oka az, hogy történt egy kivétel és az Office az adott bővítményt letiltotta. Ekkor válasszuk ki a File menü -> Options -> Add-ins menüpontot, euztán a Manage elemek közül pedig a Disabled Items-et, majd kattintsunk a Go gombra! A megjelenő ablakban válasszuk ki (ha létezik) azt az elemet, ami le van tiltva, és kattintsunk az Enable gombra (Célszerű ezután újraindítani a Word-öt)!

image

Ez a két leggyakoribb jelenség, de előfordulhat, hogy fejlesztés során mással is találkozhatunk. Bizonyos gépeken a Visual Studio 2010 Service Packja okozott problémát, máshol pedig a biztonsági beállítások. További hibajelenségekre választ az MSDN Office Development fórumán lehet találni.

Advertisements
Kategóriák:.NET, C#, Office Címke: , , ,
  1. Még nincs hozzászólás.
  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: