2013-08-30 34 views
12

Tôi cố gắng để Điền Form Fields trong Microsoft Word bằng C# Interop Assemblies với Bộ luật saulĩnh vực Điền trong Word bằng C# và 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 không thể mở File Ausgefuellt.docx và cho thấy một thông báo cho biết đã xảy ra lỗi không xác định.

Tôi tạo ra một tài liệu Word đơn giản với một chút văn bản unformated và 2 văn bản Mẫu-Fields

có thể bất cứ ai cho tôi biết, những gì đã xảy ra hoặc nếu ia có một lỗi trong mã nguồn của tôi

Sửa : Tôi đã xác định được sự cố. Tôi đã tạo một Tài liệu chỉ chứa một Trường Mẫu Văn bản. Trong Word 2013, điều này được tìm thấy trong chủ đề "Formulare aus Vorversionen" (Tôi sẽ dịch thành "Formfields từ các phiên bản cũ") Nếu tôi bình luận toàn bộ foreach Block để tôi chỉ mở và lưu tài liệu, tôi nhận được cùng một kết quả.

Nếu tôi mở Tệp nguồn trực tiếp trong Word thì không có vấn đề gì. Tôi cũng đã cố gắng tải Tài liệu và làm cho Word Hiển thị. Kết quả trông giống như một thể hiện Word trống không có Tài liệu được tải.

+0

thực hiện tại 'method' mở? –

+0

Tôi cũng tìm thấy chủ đề này http://stackoverflow.com/q/17383430/1307426 nó có thể là một vấn đề Interop Word? – sebastianmehler

+0

Tại sao bạn đang cố cập nhật mẫu? Có lẽ bạn nên phát hành một 'Word.Documents.Add (tên tệp);' do đó Word sẽ tạo một tài liệu ** mới ** dựa trên mẫu của bạn ... –

Trả lời

12

Bạn nên sử dụng:

doc = Word.Documents.Add(filename); 

Thay vì:

doc = Word.Documents.Open(filename); 

Vì vậy, Word sẽ sử dụng mẫu để tạo ra một tập tin văn bản, và không mở mẫu riêng của mình. Có vẻ như Word hoạt động khác khi tài liệu hoạt động là Mẫu.

+0

Đó là giải quyết các giải pháp. – sebastianmehler

1

Sử dụng rằng, cần làm việc:

phá vỡ
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(); 
Các vấn đề liên quan