C#生成word报告

最近项目有个小需求,简单来说就是在C#环境中自动生成word分析报告。

实现思路:先设计一个报告模板,根据需要将其中的部分内容进行替换,模板可以使用书签和文字标识两种,如果要替换的内容不是很多采用文字标识就可以,也就相当于对每个需要的部分进行查找和替换。当要替换的内容较多时可以采用书签的方式,书签的没试过,不过应该会快些。

查询了一些资料,尝试了两种方法:

1、利用Microsoft.Office.Interop.Word替换Word文档中的内容。

这个插件是随office一起安装的,如果你的电脑正常安装了office,在引用中你会看到一些相关的office插件,直接在引用中添加就可以使用。这里需要注意的是如果你安装了WPS你也会看到部分插件,不过其中的函数好像不一样,我就一直没有调通。后来没有办法卸载了WPS重新安装的office。如果你要使用这种原生的方法,建议配套使用office原生的插件。

            Word.Application app = new Word.Application();//可以打开word
            Word.Document doc = null;      //需要记录打开的word
            object missing = System.Reflection.Missing.Value;
            object File = fileName;        
            try
            {
                doc = app.Documents.Open(ref File, ref missing, ref missing,
                 ref missing, ref missing, ref missing, ref missing, ref missing,
                 ref missing, ref missing, ref missing, ref missing, ref missing,
                 ref missing, ref missing, ref missing);                
                Word.Range P_Range = doc.Range(ref missing, ref missing);
                Word.Find P_Find = P_Range.Find;               
                P_Find.Text = "需要替换的文字内容";
                P_Find.Replacement.Text = "替换后的文字内容";                   
                object P_Replace = Word.WdReplace.wdReplaceAll;
                P_Find.Execute(ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref P_Replace, ref missing,
                ref missing, ref missing, ref missing);               
                doc.Save();
                doc.Close(ref missing, ref missing, ref missing);
                app.Quit(ref missing, ref missing, ref missing);

            }
            catch
            {
                if (doc != null)
                {
                    doc.Close(ref missing, ref missing, ref missing);
                    doc = null;
                }

                if (app != null)
                {
                    app.Quit(ref missing, ref missing, ref missing);
                    app = null;
                }
            }
        }

上面代码实现的就是一个简单的查找和替换功能,可能是因为office插件封装的不好,在使用过程中发现这种方式使用起来非常麻烦,在C#中使用VB的语法感觉很别扭。并且这种方法在office中添加图表十分麻烦,如果你的报告组成元素比较复杂,建议使用下面的方法进行操作。

2.利用Spire插件进行操作

无意中发现了这个插件,这个插件基本能满足常用功能。感觉十分好用,函数使用起来和普通的库一样,不像原生的库那么麻烦。如果开发时间有限,并且还是新手,强烈推荐。安利几个相关的微博,里面有详细的使用说明和案例,并且官方文档有中文版,这点十分友好。下面的例子是官网给出的替换文本内容的例子,可以看出它的语法简洁明了,方便使用,实在是word开发必备之插件。

http://www.e-iceblue.cn/spiredoc/copy-excel-table-to-word.html

https://www.cnblogs.com/Yesi/p/9402028.html

//新建一个word文档对象并加载sample文档
Document document = new Document();
document.LoadFromFile("Test.docx", FileFormat.Docx2010);

//查找一个特定字符串 ”Spire.Doc”
TextSelection selection = document.FindString("Spire.Doc", false, true);
TextRange range = selection.GetAsOneRange();

//替换字符串
range.Text = "Replaced Text";

//设置高亮颜色
range.CharacterFormat.HighlightColor = Color.Yellow;

//查找文档中所有字符串 ”Microsoft”
TextSelection[] text = document.FindAllString("Microsoft", false, true);

//设置高亮颜色
foreach (TextSelection seletion in text)
{
    seletion.GetAsOneRange().CharacterFormat.HighlightColor = Color.Green;
}

//使用 ”MS” 替换所有 ”Microsoft”
document.Replace("Microsoft", "MS", false, true);

//保存文档
document.SaveToFile("Result.docx", FileFormat.Docx2010);

 

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值