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

Create, insert text and save a Word doc in C#(用C#创建、插入文本和保存Word文档)
本文介绍了用C#创建、插入文本和保存Word文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到了大量关于创建Word文档实例、插入各种文本和格式的有用文档,但在任何地方都找不到可以保存尚未以编程方式创建和打开的文档的内容。 从本质上讲,我希望创建一个docx文件并用富文本框中的文本填充它。使用我在How to Insert text in the end of the document找到的代码,如果我首先创建一个文档,我就能够实现这一点。但是,尽管建议使用_Document.SaveAs()(它并不存在--我猜版本不同)或.SaveAs()应该会在文件不存在时通过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();

现在,人们可能会认为删除OpenFileDialog 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();
我看到的其他示例打开文档,以便您可以自己保存它,但我需要保存它,而不需要任何人工干预,而不是选择文件名。

感谢的任何帮助,也排除了像SPIRE和GEM这样的第三方DLL的选项,因此不是一个选项:(

如果任何人有一个创建和保存Word文档的简单示例,而该文档在程序运行之前并不存在,我将非常感激。

推荐答案

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

这篇关于用C#创建、插入文本和保存Word文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)