0

我创建了一个通用函数来使用 DocX 库生成 doc 文件,但它不适用于我的 doc 模板中的所有项目。

它仅替换第一个项目并在其他项目中创建相同的 txt。我的文档参数设置如下:el0,el1,el3 .... el36

public void GenerateFile (string template, List<string> data)
{
    try { 
        //if (File.Exists(template))
        //{
        DocX dDocument;

        dDocument = DocX.Load(template);

        for (int i = 1; i < data.Count(); i++)
        {
            var item = data[i];

            if (item == null)
            {
                item = " ";
            }

            var el = "el" + i;
            dDocument.ReplaceText(el.ToString(), item);
        }

        string time = DateTime.Now.Year.ToString() + "" + DateTime.Now.Month.ToString() + "" + DateTime.Now.Day.ToString() + "" + DateTime.Now.Hour.ToString() + "" + DateTime.Now.Minute.ToString() + "" + DateTime.Now.Second.ToString() + "" + DateTime.Now.Millisecond.ToString();

        var path = HttpContext.Current.Server.MapPath("~/temp/" + Path.GetFileNameWithoutExtension(template) + "_" + time + ".docx");

        dDocument.SaveAs(path);
        downloadFile(path);
        //}
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
4

1 回答 1

0

我已经改变了我的条目的概念,我使用了带键、值的字典

public void GenerateFile(string template, Dictionary<string, string> data)
    {
        try {
            DocX dDocument;

            dDocument = DocX.Load(template);


            foreach (var item in data)
            {
                dDocument.ReplaceText("[["+item.Key+"]]", item.Value);

            }

            var path = HttpContext.Current.Server.MapPath("~/temp/" + Path.GetFileNameWithoutExtension(template) + "_" + DateTime.Now.ToString("yyyyMMddHHmmssFFF") + ".doc");
            dDocument.SaveAs(path);
            downloadFile(path);
        }
        catch (Exception ex)
        {
            throw ex;
        }

        }
于 2016-05-15T21:23:49.533 回答