2017-07-03 50 views
1

我已經發現了有關創建word文檔實例的大量有用文檔,插入所有方式的文本和格式,但無法找到任何地方保存已經沒有文檔的文檔已創建並以編程方式打開。在C#中創建,插入文本並保存一個Word文檔#

基本上我想創建一個docx文件並用富文本框中的文本填充它。使用代碼Ive在How to Insert text in the end of the document找到我能夠實現這一點,如果我第一次創建文檔。但儘管建議使用_document.SaveAs()(不存在 - 版本差異我猜)或.Save()應該提示與SaveAs對話如果該文件不存在,我總是得到一個類型不匹配的錯誤。因此,這是工作的代碼,如果我預先創建的文件來使用:

OpenFileDialog SDO = new OpenFileDialog(); 
SDO.ShowDialog(); 

Microsoft.Office.Interop.Word._Application oWord; 
object oMissing = Type.Missing; 
oWord = new Microsoft.Office.Interop.Word.Application(); 
oWord.Visible = false; 

oWord.Documents.Open(SDO.FileName); 

oWord.Selection.TypeText(richTextBox1.Text); 
oWord.ActiveDocument.Save(); 
oWord.Quit(); 

現在人們會認爲,取消對OpenFileDialogue Documents.Open線將在一定程度上節省了C#創建一個新的文件,然而,即使有:

Microsoft.Office.Interop.Word._Application oWord; 
object oMissing = Type.Missing; 
oWord = new Microsoft.Office.Interop.Word.Application(); 
oWord.Visible = false; 

SaveFileDialog SD = new SaveFileDialog(); 

SD.Filter = "Word File |*.docx"; 
SD.Title = "Save File"; 
SD.ShowDialog(); 


oWord.Documents.Save(SD.FileName,WdNewDocumentType.wdNewXMLDocument); 

oWord.Selection.TypeText(richTextBox1.Text); 
oWord.ActiveDocument.Save(); 
oWord.Quit(); 

其他的例子我見過打開的文檔,這樣就可以節省自己的,但我需要它不保存比選擇一個文件名以外的任何人的干預。

任何幫助表示讚賞,同時第三方的DLL的尖頂和寶石的選項被排除,所以不是一種選擇:(

如果任何人有創建和保存該didnt程序之前存在的Word文檔的一個簡單的例子跑ID會非常感激。

回答

2

The Microsoft MSDN documentation has tons of useful guides and examples.

你將要包括:

using Word = Microsoft.Office.Interop.Word; 
using Microsoft.Office.Tools.Word; 

然後宣告您的應用程序:

Word.Application app = new Word.Application(); 

Declare your new document:

Word.Document doc = app.Documents.Add(); 

Add text to your documnet

有兩種方法來保存這些文件:

Programmatically

Using a save file dialog box

+1

突然林困惑,爲什麼我這麼糊塗!謝謝羅德里格斯先生,我在你的編碼真棒之前屈服。 – Dan

1

這是我做的方式。

app = new Word.Application(); 

object oMissing = System.Reflection.Missing.Value; 
Word._Document oDoc = app.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 

.....

app.ActiveDocument.SaveAs2(fileName); 

其中filename是我想要的文件名。當我最初這樣做時,我發現有很多無證的(因此不受支持的)函數。 SaveAs2就是其中之一!但它確實有效。