繁体   English   中英

在C#中创建,插入文本并保存Word文档

[英]Create, insert text and save a Word doc in C#

我已经找到大量有用的文档,围绕创建单词doc的实例,插入所有方式的文本和格式,但无法找到任何东西来保存尚未创建和编程的文档。

基本上我想创建一个docx文件,并用富文本框中的文本填充它。 使用我在“ 如何在文档末尾插入文本”中找到的代码,如果我首先创建文档,我可以实现此目的。 但是,尽管建议使用_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选项,所以不是一个选项:(

如果有人有一个简单的例子来创建和保存一个在程序运行之前不存在的单词doc,那就非常有必要。

Microsoft MSDN文档包含大量有用的指南和示例。

您将要包括:

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

然后声明你的申请:

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

声明您的新文档:

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

在documnet中添加文本

保存这些文档有两种方法:

编程

使用保存文件对话框

这就是我这样做的方式。

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就是其中之一! 但它确实有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM