使用C#创建、插入文本并保存Word文档

9
我找到了很多关于创建Word文档实例、插入各种文本和格式的有用文档,但是无法在任何地方找到程序化创建并打开尚未创建的文档的保存文档方法。
基本上,我想创建一个docx文件,并使用来自RichTextBox的文本填充它。使用我在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(如spire和gem)的选项被排除了,所以不是一个选择 :(

如果有人有一个简单的例子,在程序运行之前创建并保存一个不存在的word文档,我将非常感激。

2个回答

15

3
突然我对自己为什么会这么困惑感到困惑!谢谢罗德里格斯先生,您的编码能力让我佩服不已。 - Dan
优美的构建了答案 - VA systems engineer

2
这是我的操作方式。
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);

当我最初尝试处理这个问题时,我发现有很多未记录(因此不受支持)的函数。其中之一就是SaveAs2!但它确实有效。

其中filename是我想要的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接