m$ word->html
-
hallo,
ich habe gerade ein problem:
ich habe eine word datei und möchte diese in eine html-datei umwandeln; gibt es da eine möglichkeite m$ word als server anzusprechen und so den text in html umwandeln zu lassen - wenn ja währe ich über jede hilfe dankbar....cu mEc
-
ja, mittels COM
ich kann die COM syntax für c# leider nicht, deshalb kein beispiel sondern nur ne erklärung:
die legst ein COM objekt an - instanziiert ein "Word.Application" Objekt.
Dann fügst du deine doc Datei zur application hinzu (documents.add())
dann kannst du mit saveas (und 8 als zweiten parameter die datei als html speichern)
-
hm ich finde dazu leider nichts
und so gut kenne ich mich nun auchnicht aus !kennt hier jemand das problem und kann uns sagen wie man das machen muss ?
-
hallo ?
wie gasagt ich währe auch schon über einen link glücklich !
-
such doch mit google. stichwörter hast du doch von shade bekommen.
-
ja habe ich doch schon gemacht aber leider nichts gefunden ... !
-
Word anzusprechen und ein Word-File in eine HTML umzuwandlen ist ziemlich simpel.
Ich gehe davon aus das du VS.NET haßt.
Als erste müssen wir eine COM-DLL wrappen ("Microsoft Word 9.0 Object Library")
Dazu einfach auf "Add Reverence" gehen auf COM klicken und die DLL anklicken.Und hier der Code:
Word._Application wordApplication = new Word.ApplicationClass();
object missing = System.Reflection.Missing.Value;
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "Word Document (.doc)|.doc|" + "All files (.)| .";
fileDialog.Title = "Open Word Document File";
fileDialog.Multiselect = false;
if ( fileDialog.ShowDialog( ) == DialogResult.OK )
{
// object missing = System.Reflection.Missing.Value;
object readOnly = true; object visible = false; object file = fileDialog.FileName; Word.Document document = wordApplication.Documents.Open( ref file, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref visible); if ( document != null ) { object savefile = fileDialog.FileName.Substring( 0, fileDialog.FileName.LastIndexOf('.') ); object fileformat = Word.WdSaveFormat.wdFormatHTML; document.SaveAs( ref savefile, ref fileformat, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing );
// document.Close( ref missing, ref missing, ref missing );
}
}
wordApplication.Quit( ref missing, ref missing, ref missing );[/code]
Garnicht mal so schwer, oder?
[ Dieser Beitrag wurde am 02.04.2003 um 14:30 Uhr von Scania V8 editiert. ]
-
Scania du hast es geschafft etwas einfaches, kompliziert darzustellen. Respekt!
-
Ja stimmt so richtigen Durchblick habe ich auch nicht:
Dazu einfach auf "Add Reverence" gehen auf COM klicken und die DLL anklicken.
Wo findet man denn z.B. dieses "Add Reverence" ??
-
Ich bin davon ausgegangen, das ihr mit den VS.NET umgehen könnt!
Hier für die englische Version:
1. Solution Explorer öffnen
a) Menü "View" -> Solution Explorer
b) STRG + Alt + L2. Dein Projekt öffnen/erweitern/expand
3. mit der rechten Maustaste auf Item "Reverences" klicken.
-
Auf Deutsch heißt es "Verweise". Dann wird es wohl auf Englisch "References" und nicht "Reverences" heißen.
-
also bei mir kommt immer folgernder fehler:
************** Ausnametext **************
System.Runtime.InteropServices.COMException (0x800A11FD): Diese Methode oder Eigenschaft ist nicht verfügbar, weil kein Dokumentfenster aktiv ist.
at Word.DocumentClass.Close(Object& SaveChanges, Object& OriginalFormat, Object& RouteDocument)
at WindowsApplication1.Form1.button1_Click(Object sender, EventArgs e) in c:\test\form1.cs:line 141
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)plant hier jemand womit der nicht klar kommt?
-
Danke Danke bei mir geht der Code ohne Probleme !
Nur eine Frage:
Der Code startet ja den Prozess "WINWORD.EXE" (win2000) sollte der nicht vondocument.Close( ref missing, ref missing, ref missing );
wieder beendet werden ???
Bei mir läuft der immer weiter und verbraucht Speicher -> kann ich den dann einfach wieder beenden ? Und wie ?
Gruizi..
-
Änderungen siehe oben
-
Danke schön !
Noch eine weitere Frage:
object savefile = fileDialog.FileName.Substring( 0, fileDialog.FileName.LastIndexOf('.') );
will ich in:
object savefile = TextBox1.Text;
wandeln aber da muss ich doch bestimmt einen anderen Datentyp nehmen ("kann nicht von string zu ref object konvertiert werden") -> oder ist das total falsch ???
-
object savefile = (object) TextBox1.Text;
-
Noch eine weitere Frage:
object savefile = fileDialog.FileName.Substring( 0, fileDialog.FileName.LastIndexOf('.') );
will ich in:
object savefile = TextBox1.Text;
Substring und Text haben den gleichen Rückgabe-Datentyp, string
Mal so nebenbei, alle Datentypen sind unter .NET von der Klasse Object abgeleitet.
-
C#Hacker schrieb:
Danke Danke bei mir geht der Code ohne Probleme !
Nur eine Frage:
Der Code startet ja den Prozess "WINWORD.EXE" (win2000) sollte der nicht vondocument.Close( ref missing, ref missing, ref missing );
wieder beendet werden ???
Bei mir läuft der immer weiter und verbraucht Speicher -> kann ich den dann einfach wieder beenden ? Und wie ?
Gruizi..
Such Dir doch aus den Laufenden Prozessen (System.Diagnostics.Process.GetProcesses) den raus, der "WINWORD.EXE" heißt und sag dann .Kill()
document.Close(...) schließt nur das Dokument-Fenster (wie der Name erahnen läßt), nicht jedoch das Programm. Es gibt sicher noch elegantere Methoden als diesen Holzhammer, aber es ist das Einfachste und Schnellste...
Q
-
Macht es Spaß in nem 3 Jahre lang vergammelten Thread zu antworten?
-
Anscheined