2013-04-27 35 views
15

Chcę otworzyć plik tekstowy zapisany na moim serwerze przy użyciu "Microsoft.Office.Interop.Word". To jest mój kod:Otwieranie i modyfikowanie dokumentu programu Word

object missing = System.Reflection.Missing.Value; 
    object readOnly = false; 
    object isVisible = true; 
    object fileName = "http://localhost:52099/modelloBusta/prova.dotx"; 
    Microsoft.Office.Interop.Word.ApplicationClass applicationWord = new Microsoft.Office.Interop.Word.ApplicationClass(); 
    Microsoft.Office.Interop.Word.Document modelloBusta = new Microsoft.Office.Interop.Word.Document(); 

    try 
    { 

     modelloBusta = applicationWord.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible,ref missing, ref missing, ref missing, ref missing); 
     modelloBusta.Activate(); 



    } 
    catch (COMException eccezione){ 
     Console.Write(eccezione); 
     modelloBusta.Application.Quit(ref missing, ref missing, ref missing); 

    } 

w Menedżerze zadań okna proces jest obecny, ale nie pojawi się „dokument słowo” (aplikacja nie uruchamia się). Na czym polega problem? Z góry dzięki.

+1

Spróbuj [OpenXML SDK] (http://msdn.microsoft.com/en-us/library/bb448854%28v=office.14%29.aspx) dokumenty, a [Pobierz ] (http://www.microsoft.com/en-us/download/details.aspx?id=5124) – Elyor

+0

A dla twojego problemu za bardzo dobrą odpowiedź: 1-> Odczytaj plik * .dotx ze zdalnego adresu URL w Pole strumienia, 2-> [Dokument Word OpenXMl] (http://msdn.microsoft.com/en-us/library/office/ff478386.aspx) w celu scalenia loginu tutaj ... – Elyor

+0

Staraj się używać dokumentów typu docx; w ten sposób możesz traktować je jako xml. Ponadto musisz mieć licencjonowaną i aktywowaną kopię programu Word na swoim serwerze, aby móc korzystać z tych funkcji. –

Odpowiedz

16

Musisz upewnić się, że okno aplikacji Słowo faktycznie jest widoczny podczas automatyzowania Słowo tak:

var applicationWord = new Microsoft.Office.Interop.Word.Application(); 
applicationWord.Visible = true; 
+0

Tak, rozwiązałem z applicationWord.Visible = true; – ilamaiolo

5

najpierw dodać dll z office.interop dodając bezpośrednio do zasobów następnie dodać to przy użyciu dyrektywy :

using Microsoft.Office.Interop.Word; 

i użyć następującego kodu

Application ap = new Application(); 
Document document = ap.Documents.Open(@"C:\invoice.docx");; 
5

http://support.microsoft.com/kb/257757

Firma Microsoft obecnie nie zaleca i nie obsługuje aplikacji Automation of Microsoft Office z dowolnej nienadzorowanej, nieinteraktywnej aplikacji klienckiej lub komponentu (w tym ASP, ASP.NET, DCOM i usług NT), ponieważ Office może wykazują niestabilne zachowanie i/lub zakleszczenie, gdy pakiet Office działa w tym środowisku.

http://freeword.codeplex.com/

Document document = new Document(); 
document.LoadFromFile("test.doct"); 
+4

Ważne, aby pamiętać, że chociaż to podejście działa, ma ono ograniczenia: darmowa wersja Spire.Doc jest ograniczona do 100 akapitów. To ograniczenie jest wymuszane podczas odczytywania lub zapisywania plików. Uaktualnij do wersji komercyjnej Spire.Doc gap

+0

Czy to rzeczywiście otwiera się i czyta, czy robi konwersje? –

Powiązane problemy