需要使用启用了宏的模板才能使用C#代码获取docx文件作为输出

迪帕克

新成员
已加入
2021年2月12日
留言内容
3
编程经验
1-3
我有一个控制台应用程序,该应用程序从API获取json结果,并且需要使用启用了宏的模板(它具有一些自定义快捷键,而不是页眉或页脚)。我需要将josn结果写入宏模板并将其另存为docx文件。当我尝试下面的代码时,我得到了docx文件,但是缺少自定义快捷键。谁能检查我的代码并帮助我正确执行?

C#:
private static void PocUsingDotTemplate()
{
    SetAsposeLicense();
    var [email protected]"C:\tools\PoC\dot-template";
    var [email protected]"C:\tools\PoC\dot-template\template.dotm";
    var [email protected]"C:\tools\PoC\dot-template\197669-1502119-de.html";
    var opts1=new LoadOptions();
opts1. LoadFormat=LoadFormat.Dotm;
    var opts2=new LoadOptions();
opts1. LoadFormat=LoadFormat.Html;
   
    var template=new Document(pathToTemplate,opts1);
    var document=new Document(pathToDocument,opts2);
   
    DocumentBuilder dbuilder=new DocumentBuilder(template);
dbuilder. InsertDocument(document,ImportFormatMode.UseDestinationStyles);
   
    //next lines are to generate a document with macros activated in output,
    //Hence the format should be docm.
dbuilder. Document.Save($"{basepath}{DateTime.Now.GetHashCode()}.docm",SaveFormat.Docm);
   
    //next lines removes the macro from document builder and geneates properly
    //a docx document
dbuilder. Document.RemoveMacros();
dbuilder. Document.Save($"{basepath}{DateTime.Now.GetHashCode()}.docx",SaveFormat.Docx);
}
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,552
地点
弗吉尼亚州切萨皮克
编程经验
10+
好吧,考虑到自定义快捷键的工作方式是使用宏,并且在第24行上要删除宏,为什么对结果感到惊讶?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,552
地点
弗吉尼亚州切萨皮克
编程经验
10+
.docx文件中仍可以包含宏。 (这是一些恶意软件传播的方式。)只需注释掉第24行。

之后修改:根据我几年前使用alpha / beta版本(而不是实际的生产版本)的经验为我提供评论意​​见。您是正确的,DOCX格式不应该将宏与它们一起存储。因此,注释掉上面的第24行将无济于事。

我认为关键在于它决定了这些快捷方式在文档中的位置/建立方式。如上所述,我相信键盘快捷键是作为宏输入的。如果现在允许使用宏,那么您还必须放弃键盘快捷键。
 
Last edited:
最佳 底部