Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换模板docx文档中的内容并打开XMLSDK2.0(2009年8月)?_C#_Openxml_Docx - Fatal编程技术网

C# 如何替换模板docx文档中的内容并打开XMLSDK2.0(2009年8月)?

C# 如何替换模板docx文档中的内容并打开XMLSDK2.0(2009年8月)?,c#,openxml,docx,C#,Openxml,Docx,我有一个“模板”docx文档,其中包含所需的布局,并希望使用C#插入内容,但我找不到唯一解决文档特定部分(如段落或表格)的方法。 唯一标识文档中元素的最佳方法是什么? 谢谢 Matt Sharpe.您可以使用文档变量/字段吗?只需进入插入->快速零件->字段->单据变量,输入变量名称 例如: 您也可以只使用占位符文本值,如“##insert_first_name##”,然后搜索并替换这些变量 例如: 我认为您正在寻找书签或内容控件(在功能区的“开发人员”选项卡上,代码示例) 我在Excel中使

我有一个“模板”docx文档,其中包含所需的布局,并希望使用C#插入内容,但我找不到唯一解决文档特定部分(如段落或表格)的方法。 唯一标识文档中元素的最佳方法是什么? 谢谢
Matt Sharpe.

您可以使用文档变量/字段吗?只需进入插入->快速零件->字段->单据变量,输入变量名称

例如:

您也可以只使用占位符文本值,如“##insert_first_name##”,然后搜索并替换这些变量

例如:

我认为您正在寻找书签或内容控件(在功能区的“开发人员”选项卡上,代码示例)

我在Excel中使用命名范围也是出于同样的目的。

您的模板是如何构建的?它是否使用作为*.docx的一部分加载的基础XML模式?或者您是否在使用开发者功能区之外的内容控件,在这种情况下,每个控件都由给定的标记名唯一标识?这两种方法都可以使您更容易地识别文档的某些部分,因为您可以控制表格或段落的位置

也可以考虑使用(U.NET 3.5)。它包括一个方便的文档反射工具,允许您打开和检查任何打开的XML文档,并显示如何为单击的任何元素生成代码

除此之外,要了解有关内容控件的更多信息,您可以查看以下帖子:


有几种方法可供选择

我创建了一个简单的开源库,它将用值替换标记

例如,
Hi{name}
with
data={name:“John”}
将替换为
Hi John

这是:


演示:

感谢您的回复。DocVariable看起来很有趣,我们可能会将其用于文本位。但是,它没有解决唯一标识表的问题。非常感谢,我将查看功能区中的“开发人员”选项卡。。。我忘了它在那儿;-)干杯,我来看看这些链接。非常感谢。tanks@edi9999它与.docx配合得很好,但与.pptx有同样的问题。它也与pptx配合使用(使用
PptxGen=require(“docxtemplater”)。PptxGen
)如果它们是可以从C调用的http api,您是否感兴趣?