0

我想使用 DocX 以编程方式创建和操作 Word 文档!并创建一个单词模板InvoiceTemplate.docx这是我的代码:

protected void CreateDoc_Click(object sender, EventArgs e)
{
    //Createa docx File
    DocX gDocument;
    gDocument = 
        DocX.Load(@Server.MapPath("InvoiceTemplate.docx"));
    gDocument = 
        CreateInvoiceFromTemplate(DocX.Load(@Server.MapPath("InvoiceTemplate.docx")));
    gDocument.SaveAs(@Server.MapPath("~/DocX/NewLoadedShipment.docx"));
}

private static DocX CreateInvoiceFromTemplate(DocX template)
{
    template.AddCustomProperty(
        new CustomProperty("{rechnung}", "5"));
    template.AddCustomProperty(
        new CustomProperty("{name}", "Maziar"));
    template.AddCustomProperty(
        new CustomProperty("{date}", DateTime.Now.ToString("dd.MM.yyyy")));
    template.AddCustomProperty(
        new CustomProperty("{address}", "12345hamburg"));
    template.AddCustomProperty(
        new CustomProperty("{tell}", "2234543"));
    template.AddCustomProperty(
        new CustomProperty("{amount}", "1000"));
    template.AddCustomProperty(
        new CustomProperty("{rest}", "500"));
    template.AddCustomProperty(
        new CustomProperty("{tax}", "100"));
    template.AddCustomProperty(
        new CustomProperty("{total}", "600"));
    return template;
}

但我什么也没发生NewLoadedShipment.docx!请有人帮忙!

4

2 回答 2

2

DocX 中有一个名为“ReplaceText”的函数,允许您替换文档中的文本。

例如,您必须首先像这样引用您的模板...

DocX letter = DocX.Load(%YOUR TEMPLATE NAME%);

然后你可以做...

letter.ReplaceText("%REPLACE_THIS%","%WITH_THIS%");

希望这可以帮助!

于 2015-01-20T15:20:00.140 回答
1

所以我通常提倡为此目的使用 DocXTemplateEngine。比使用 novacode-docx 进行模板替换更简单。

以简单的方式填写标准邮件合并字段

var templateEngine = new swxben.docxtemplateengine.DocXTemplateEngine();
templateEngine.Process(
    source = "template.docx",
    destination = "dest.docx",
    data = new {
       Name = "SWXBEN"
    }
); 

可用https://www.nuget.org/packages/swxben.docxtemplateengine/

于 2014-09-08T23:17:06.440 回答