Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 28
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Export Office Dokument nach PDF / XPS


Autor: Meik Tenbergen
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 3386
  
Kick it on dotnet-kicks.de  

Beschreibung:

Zeigt wie man mit > Office 2007 Datei als DPF oder XPS speichert. Dieses Snippet beschreibt das Beispiel anhand von Excel. Evtl. ist ein Office Addin notwendig, ist bei Microsoft frei verfügbar.

Abgelegt unter: PDF, XPS, Convert, Convert PDF, Convert XPS, Export PDF, Export XPS, Word Convert PDF, Excel Export PDF, Office Dokument nach PDF, Office Dokument nach XPS.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Ort der Exceldatei
string QuelleExcelDatei = @"C:\ExcelDatei.xls";
// Speichertort der PDF Datei
string ZielPdfDatei = @"C:\Export.pdf";

// Leere Datentyp für die Com Schnittstelle
object m = Type.Missing;

// Instanz der Excel Anwendunng erstellen
Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass();
      
// Instand der Exceldatei
Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Open(QuelleExcelDatei, m, m, m, m, m, m, m, m, m, m, m, m, m, m);

// Export in das Zielformat und Position
workbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, ZielPdfDatei, m, m, m, m, m, m, m);

// Die Exceldatei und Anwendung schließen
workbook.Close(m, m, m);
app.Quit();

// Die Com Objekte freigeben
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app);

// Die Speichert freigeben
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

timmi schrieb am:  20.07.2010 10:43:04

Das Add-In das du (denke ich) meinst und benötigt wird nennt sich Primary Interop Assemblies (PIA).

Möchte man diese Funktionalität automatisiert auf einem Server betreiben, so muss Office auf dem Server installiert sein, was ich als sehr unschön empfinde.

Trotzdem gut zu wissen DAS es möglich ist und WIE es möglich ist, vielen Dank für diesen Snippet. :)
RoSi schrieb am:  20.07.2010 11:06:56

Aus eigener leidvoller Erfahrung (es war jemand nicht davon abzubringen, Excel auf dem Server einzusetzen) empfehle ich, das FinalReleaseComObject anders zu verwenden:


ReleaseComObj(workbook);
ReleaseComObj(app);

private static void ReleaseComObj(object o){
try{
int i;
do{
i = System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
} while(i>0);
}
catch{}
finally{
o = null;
}
}


Ohne die do-while-Schleife blieben manche Instanzen im Taskmanager erhalten und wurden nicht komplett beendet.
RoSi schrieb am:  20.07.2010 11:12:45

@timmi: ich glaube er meint die Möglichkeit, generell unter Office 2007 PDFs zu speichern. Das ging in der Tat nur, wenn er ein Add-In installiert:
http://www.microsoft.com/downloads/details.aspx?familyid=f1fc413c-6d89-4f15-991b-63b07ba5f2e5&displaylang=de
timmi schrieb am:  20.07.2010 11:48:29

@RoSi: Fährt man fleißig Updates ist das mittlerweile eigentlich nicht mehr nötig, deswegen schrieb er auch "evtl.". ;-)


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.