2013-08-30 21 views
12

ho provato a compilare il modulo I campi in Microsoft Word utilizzando C# Interop Assemblies con il seguente codicecampi di riempimento in Word utilizzando C# e Microsoft Word Interop

string filename = @"N:\mehler\Vorlage2.dotx"; 

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 
Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document(); 

doc = word.Documents.Open(filename); 
doc.Activate(); 

foreach (Microsoft.Office.Interop.Word.FormField field in doc.FormFields) 
{ 
    switch (field.Name) 
    { 
     case "Text2": 
      field.Range.Text = "1"; 
      break; 

     default: 
      break; 
    } 
} 

doc.SaveAs2(@"N:\mehler\Ausgefuellt.docx"); 
doc.Close(); 
word.Quit(); 
System.Diagnostics.Process.Start(@"N:\mehler\Ausgefuellt.docx"); 

Microsoft Word non può aprire il file Ausgefuellt.docx e Spettacoli un messaggio che dice che si è verificato un errore sconosciuto.

ho creato un semplice documento di Word con un po 'di testo unformated e 2 Testo-Form-Fields

qualcuno può dirmi, cosa è andato storto o se ia hanno un errore nel mio codice sorgente

Edit : Sono riuscito a specificare il problema. Ho creato un documento che contiene solo un campo modulo testo. In Word 2013 questo viene trovato dall'argomento "Formulare aus Vorversionen" (lo tradurrei in "Formfields da versioni precedenti") Se commento l'intero blocco foreach in modo che io apri e salvi solo il documento, ottengo lo stesso risultato.

Se apro il file di origine direttamente in Word non è un problema. Ho anche provato a caricare il documento e rendere visibile Word. Il risultato sembrava un'istanza Word vuota senza documento caricato.

+0

l'esecuzione a 'method' aperta? –

+0

Ho trovato anche questo argomento http://stackoverflow.com/q/17383430/1307426 potrebbe essere un problema di interoperabilità di Word? – sebastianmehler

+0

Perché stai cercando di aggiornare il modello? Forse dovresti scrivere un 'Word.Documents.Add (nomefile);' così Word creerà un ** nuovo ** documento basato sul tuo modello ... –

risposta

12

Si dovrebbe usare:

doc = Word.Documents.Add(filename); 

Invece di:

doc = Word.Documents.Open(filename); 

Quindi Word utilizzerà il modello per creare un file di documento, e non aprire il modello stesso. Sembra che Word si comporti diversamente quando il documento attivo è un Template.

+0

Questa è la soluzione, grazie per questo suggerimento! – sebastianmehler

1

Usa che, dovrebbe funzionare:

pause
Word.Application WordApp; 
Word.Document WordDoc; 

object misValue = System.Reflection.Missing.Value; 

WordApp = new Word.ApplicationClass(); 
WordDoc = WordApp.Documents.Open(filePath2, misValue, misValue, misValue, misValue, misValue, 
     misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); 
WordDoc.Activate(); 
Problemi correlati