Fragen zur Entwicklung mit NetOffice z.B. wie sende ich eine E-Mail oder wie öffne ich ein Word Dokument bitte im Forum Office-Technologien und nicht hier.
NetOffice - .NET Wrapper Assemblies für den Zugriff auf Microsoft Office, Excel, Word, Outlook, PowerPoint, Access http://netoffice.codeplex.com
- Office Integration ohne Versionsbeschränkung
- Alle Objekte, Methoden, Properties und Events der Office Versionen 2000, 2002, 2003, 2007, 2010 enthalten
- Attribute Konzept und XML Source Doku zur Information welche Office Version(en) die jeweilige Methode oder Property anbietet (siehe angehängtes Bild)
- Syntaktisch und semantisch identisch zu den Interop Assemblies
- Reduzierter und besser lesbarer Code durch automatische Verwaltung von COM Proxies
- Keine Deployment Hürden, keine problematische Registrierung, keine Abhängigkeiten, keine Interop Assemblies, kein VSTO notwendig
- Mit jeder .NET Version ab 2.0 verwendbar
- Problemlose Addin Entwicklung
- Dokumenation und Beispielprojekte inkl. Addins für alle Office Produkte in C# und VB.NET auch online verfügbar
Beispielcode für die Erstellung eines neuen TaskItem in Outlook(Example02.csproj)
// Initialize Api COMObject Support
LateBindingApi.Core.Factory.Initialize();
// Create an Outlook Application object.
Outlook.Application outlookApplication = new Outlook.Application();
// Create a new TaskItem.
Outlook.TaskItem newTask = outlookApplication.CreateItem(OlItemType.olTaskItem) as Outlook.TaskItem;
// Configure the task at hand and save it.
newTask.Subject = "check for NetOffice.DeveloperToolbox updates";
newTask.Body = "check updates here: http://netoffice.codeplex.com";
newTask.DueDate = DateTime.Now;
newTask.Importance = OlImportance.olImportanceHigh;
newTask.Save();
// close outlook and dispose
outlookApplication.Quit();
outlookApplication.Dispose();
Fragen, Kritik, Verbesserungsvorschläge und Bug Reports sind natürlich sehr willkommen.
Schlagwörter: Office Excel Word Outlook PowerPoint Access
Screenshot: IntelliSense Unterstützung in C# für Versionsinformation eines Property.
Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von user8744 am .
Klingt sehr gut. Gibt es auch die Möglichkeit beim Erstellen anzugeben, welche (minimale/exakte) Application-Version verwendet werden soll?
Also für den Fall, dass mehrere Installiert sind und man sich daher nicht sicher sein kann, dass gerade die gewünschte Version als Standardanwendung eingetragen ist.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Marsti am .
Hallo MagicAndre,
Guter Punkt!
Ich erstelle gerade einen kleinen Guide bzw. kurze Übersicht zu dem Thema.
Release 0.9 (Beta) wird auch x64 Assemblies für alle .NET Versionen ab .NET 2.0 enthalten. Das Release erscheint in der Nacht vom 5. zum 6. Juni also spätestens kommenden Montag morgen ;) UPDATE: Seperate Assemblies für andere Plattformen sind nicht nötig. NetOffice funktioniert auch plattformunabhängig.
Hallo Marsti,
Ja, du kannst dem Application Objekt im Constructor die gewünschte ProgId übergeben und damit eine spezifische Version starten.
Sebastian
Edit: Das Release wird sich wohl verzögern da sich Office x64 prinzipiell nicht auf WindowsXP(x64) installieren lässt und ich kein anderes System zu Hause habe. Schade.
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von user8744 am .
Ich erstelle gerade einen kleinen Guide bzw. kurze Übersicht zu dem Thema.
Release 0.9 (Beta) wird auch x64 Assemblies für alle .NET Versionen ab .NET 2.0 enthalten.
Ich habe von NuGet bisher nur gelesen, ich muss mich erstmal informieren was ich dazu tun müsste. Wenns ohne Hürden umsetzbar ist, klar warum nicht.
EDIT 08.07.2011: Nein, auch Version 1.1 wird es nicht als NuGet-Paket geben.
Ich wusste nicht das Windows7 x64 als Trial erhältlich ist. Danke für den Tipp!
Ich bin mir sicher das neue Release diese Woche noch fertig zu bekommen.
Du meinst das Release Tag?
Bei kleineren Bugfixes bzw. Anpassungen/Erweiterungen update ich das Tag ohne auf der Codeplex Seite jedesmal ein neues Release zu erstellen. Wenn du z.B. ein Issue erstellst kümmere ich mich sofort um den Fehler und update dieses Release Tag quasi noch am gleichen Tag. Das Release auf der Webseite muss immer etwas warten. 3 neue Releases am Tag würden keinem nützen glaube ich.
ja, ich will nur den trunk. Kannst du die Quellcodeverwaltung aufsplitten in trunk, tags, branches und dann wenn du eine Version fertig hast erstellst du einen Tag und keine RAR? SVN und große Dateien ist nicht wirklich schnell. TSVN kackt öfters mal ab und ich muss aufräumen und nochmals updaten.
lassen mit NetOffice auch die Office-Anwendungen in die eigene Applikation einbetten?
Ich muss für ein aktuelles Projekt Excel-Dateien innerhalb meiner Anwendung anzeigen. Bisher habe ich es mit einem WebBrowser-Control versucht. Dies funktioniert jedoch ohne Änderung an der Registry nicht richtig.
@ManiacViper:
Der Wrapper ist lediglich als background-Worker gedacht, d.h. Office-Dokumente erstellen und bearbeiten. Für die Anzeige musst du leider andere Wege gehen.
coole API - ich brauche sie gerade wieder für ein kleines Projekt. Vielen Dank dafür!
Und (wie könnte es anders sein) dazu gleich eine Frage. Ich muss mit meinem Programm große Datenmengen (>50.000 Zeilen, 6 Spalten) in Excel importieren. Wenn ich die händisch (Zelle für Zelle) hinzufüge dauert das ewig.
Gibt es eine Möglichkeit das zu beschleunigen, beispielsweise über einen CSV-Import?
EDIT: Da habe ich wohl nicht klar genug formuliert. Die Frage bezieht sich ganz konkret auf die netoffice-API: Ist ein CSV-Import mit dieser API möglich? Und wenn ja, wie?
Viele Grüße,
Markus :)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Spontifixus am .
Moderationshinweis von herbivore
(27.06.2011 - 16:53:33):
Bitte die Frage nur in direktem Bezug zu "NetOffice - Ein versionsunabhängiger Wrapper für MS-Office" beantworten, denn wir sind hier in ".NET-Komponenten und C#-Snippets" und nicht in "Entwicklung".
die API hört sich Interessant an. Leider bin ich noch nicht dazugekommen sie mal zu testen.
Aber eine Frage habe ich schon. Muss auf dem Zielrechner des Anwenders Office installiert sein?
Hallo,
ja - Office muss installiert sein - die API ist "nur" eine LateBinding-Wrapper um
die OfficeAPI - Vorteil: Es muss keine bestimmte Office-Version installiert sein.
Es handelt sich dabei nicht um eine vollständig neue Implementierung der OfficeAPI
Genial!
Ich habe zwar nur Excel getestet, muss aber sagen: Hut ab! Auch allem wg. der vielen Arbeit, die ganzen Properties nachzubauen und alles so fein zu dokumentieren und zu "bebeispielen".
Nur zur Info: Ich habe bisher versucht:
- direktes COM: ist an Unterschieden zwischen den Excelversionen gescheitert
- Xml-Writer von CarlosAg: ein recht gutes Teil, wenn man nur schreiben will, läuft voll ohne Excel. Ich aber muss in bestehende Blätter schreiben, und da gibts Schwierigkeiten mit der Zelladressierung.
- Ado.Net: immer wieder Fehler "Installierbares Isam nicht gefunden" auf diversen Maschinen in freier Wildbahn.
Dankeschön, NetOffice ist allerdings nicht von Hand gemacht sondern mit einem Codegenerator erstellt den ich dafür entwickelt habe, den gibt es auch auf Codeplex.
Nochwas: Eine italienische IT-Firma ist an mich heran getreten ob es möglich ist MS-Project zu integrieren. Dankenswerte Weise wurden mir die beiden verfügbaren MS-Project Versionen(2007 und 2010) dafür zur Verfügung gestellt. In den nächsten Tagen werde ich das umsetzen jedoch fehlt mir jede Kentniss über das Produkt. Wenn jemand Lust hat sich dem NetOffice Team anzuschliessen und ein wenig Beispielcode dafür zur schreiben zu stellen wäre das toll. Eine Liste welche OpenSource Projekte inzwischen von Interop und VSTO auf NetOffice umgestellt haben veröffentliche ich demnächst.
danke für den Hinweis, ich hab das wie von dir vorgeschlagen über Copy'n'Paste (CSV-Daten in die Zwischenablage kopieren und dann in den entsprechenden Bereich kopieren) gelöst. Das funktioniert extrem schnell.
NetOffice ist ein Wrapper - wenn etwas über das Objektmodell geht, dann kann es meines Wissens nach auch NetOffice.
Der einfachste Weg ist finde ich den "Makro-Recorder" anzuwerfen, die gewünschte Aktion durchzuführen und sich danach den VBA-Code anschauen,
wie ich es nachfolgend getan habe.
Der aufgenommene VBA-Code sieht so aus:
Sub ExportActiveDocAsPdf()
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"Dateiname.pdf", ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
True, UseISO19005_1:=False
End Sub
Daraus macht man dann in C# beispielsweise folgendes:
// export the newly created document as a pdf
newDocument.ExportAsFixedFormat(@"Dateipfad.pdf", WdExportFormat.wdExportFormatPDF,
false, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument, 1, 1,
WdExportItem.wdExportDocumentContent, true, true, WdExportCreateBookmarks.wdExportCreateNoBookmarks, true, true, false);
Eine lauffähige Version könnte dann so aussehen:
using NetOffice.WordApi.Enums;
using Word = NetOffice.WordApi;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
// Initialize Api COMObject Support
LateBindingApi.Core.Factory.Initialize();
// start word and turn off msg boxes
Word.Application wordApplication = new Word.Application();
wordApplication.DisplayAlerts = WdAlertLevel.wdAlertsNone;
// add a new document
Word.Document newDocument = wordApplication.Documents.Add();
// insert some text
wordApplication.Selection.TypeText("This text is written by NetOffice");
// export the newly created document as a pdf
newDocument.ExportAsFixedFormat(@"Dateipfad.pdf", WdExportFormat.wdExportFormatPDF,
false, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument, 1, 1,
WdExportItem.wdExportDocumentContent, true, true, WdExportCreateBookmarks.wdExportCreateNoBookmarks, true, true, false);
// close document unsaved
newDocument.Close(false, null, null);
// exit word
wordApplication.Quit();
wordApplication.Dispose();
}
}
}
LG
Achim
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Taipi88 am .