C#操作Word文件(.docx)通过指定标签插入内容

        我尝试找使用C#修改word文件的方法时到处查找都是通过office的com组件来进行操作,这对客户机要求就是一定要有装office,wps低版本也行但是经常会有窗口打开后关闭不了的情况,而且通过com组件调用效率也不高,所以我写了一个简单的OpenXml的扩展类,目前只有通过在指定标签位置插入内容的功能。

这是使用时测试用的代码(浓厚的AI风格,因为就是AI写的O(∩_∩)O哈哈~),测试的时候我发现第一次调用扩展方法耗时会达到几百毫秒后续调用就基本上只有几十毫秒,具体原因没分析出来,但是无伤大雅挂个Task.Run()跑就完事了O(∩_∩)O哈哈~

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //var ticks = Stopwatch.StartNew();
            if (File.Exists(tempPath))
            {
                File.Delete(tempPath);
            }
            File.Copy("文档.docx", tempPath);
            using (WordprocessingDocument wordDoc =
 WordprocessingDocument.Open(tempPath, true))
            {
                wordDoc.InsertTextAtBookmark("cs","文本。。。。。。。。。。。。。");
                wordDoc.InsertImageAtBookmark("img", "cs.png", ImagePartType.Png);
                var table = new System.Data.DataTable();
                table.Columns.Add("测试1");
                table.Columns.Add("测试2");
                table.Rows.Add(1, 2);
                table.Rows.Add(3, 4);
                wordDoc.InsertTableAtBookmark("table", table);
            }
            //ticks.Stop();
            //Log($"第一次耗时{ticks.ElapsedMilliseconds}ms");

            //ticks.Start();
            //Log(QuickEditSuiteAPI.Word.WordHelper.InsertTextAtBookmark(
tempPath, "cs", "输入"));
            //ticks.Stop();
            //Log($"第二次耗时{ticks.ElapsedMilliseconds}ms");

            //ticks.Start();
            //Log(QuickEditSuiteAPI.Word.
WordHelper.InsertImageAtBookmark(tempPath, "img", "cs.png", ImagePartType.Png));
            //ticks.Stop();
            //Log($"第三次次耗时{ticks.ElapsedMilliseconds}ms");

            //ticks.Start();
            //var table = new System.Data.DataTable();
            //table.Columns.Add("测试1");
            //table.Columns.Add("测试2");
            //table.Rows.Add(1,2);
            //table.Rows.Add(3,4);
            //Log(QuickEditSuiteAPI.Word.WordHelper.
InsertTableAtBookmark(tempPath, "table", table));
            //ticks.Stop();
            //Log($"第四次次耗时{ticks.ElapsedMilliseconds}ms");
            Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
        }

这是测试用的.docx文档标签:

这是执行后的效果:

这个OpenXml只能用来打开.docx文件,.doc是不行的(docx里面是xml,doc不是)。

下面是gitee仓库地址

QuickEditSuiteAPI: C#操作Word文件(.docx)通过指定标签插入内容https://gitee.com/RK15/quick-edit-suite-apihttps://gitee.com/RK15/quick-edit-suite-api

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值