我使用Word和OpenXml在C#ASP.NET Web应用程序中提供邮件合并功能:
1)上传包含许多预定义字符串的文档以进行替换.
2)使用OpenXML SDK 2.0我打开Word文档,将mainDocumentPart作为字符串并使用Regex执行替换.
3)然后我使用OpenXML创建一个新文档,添加一个新的mainDocumentPart并将替换产生的字符串插入到这个mainDocumentPart中.
但是,新文档中的所有格式/样式等都将丢失.
我猜我可以单独复制和添加样式,定义,注释部分等来模仿原始文档.
但是有没有一种方法使用Open XML复制文档,允许我在新副本上执行替换?
谢谢.
我正在从word文件中读取文本并从readed文本中替换一些文本.
var wordApp = new Microsoft.Office.Interop.Word.Application();
object file = path;
object nullobj = System.Reflection.Missing.Value;
var doc = wordApp.Documents.Open(ref file, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj);
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data = Clipboard.GetDataObject();
var text =data.GetData(DataFormats.Text);
Run Code Online (Sandbox Code Playgroud)
所以我有来自原始word文件的文本,现在我需要它传递给一个不存在的新word文件(New Text).
我试过了
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "WINWORD.EXE";
Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)
这将打开新的word文件,这个文件没有物理保存在文件系统中,这很好.但我不确定如何将文本值传递给这个新文件.
更新
运行上面的代码后,我尝试了
var wordApp = new Microsoft.Office.Interop.Word.Application();
var doc = wordApp.ActiveDocument;
Run Code Online (Sandbox Code Playgroud)
提出 "此命令不可用,因为没有文档打开."