C# 操作word文档(插入文字/表格)

主要思路:在word文档中需要插入数据的地方添加书签,然后通过获取word文档中的书签添加文字/表格

引用包:Microsoft.Office.Interop.Word

cs 复制代码
Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document();
            object miss = System.Reflection.Missing.Value;

            DataTable dt_purCode = (DataTable)dataGridView1.DataSource; //需要插入word文档的表格数据

            string appPath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            //获取模板路径
            object templatePath = appPath + "Template\\Report - 副本.docx";
            Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
            object objDocType = Microsoft.Office.Interop.Word.WdDocumentType.wdTypeDocument;
            object objfalse = false;
            object objtrue = true;
            doc = (Microsoft.Office.Interop.Word.Document)appWord.Documents.Add(ref templatePath, ref objfalse, ref objDocType, ref objtrue);
        try{
             //获取模板中所有的书签
             Microsoft.Office.Interop.Word.Bookmarks odf = doc.Bookmarks;
             //在word文档 name 书签位置插入"张三"
             odf.get_Item("name").Range.Text = "张三";

             //在word文档 item书签位置插入表格数据
            Microsoft.Office.Interop.Word.Table dtWord = doc.Tables.Add(odf.get_Item("item").Range, dt_purCode.Rows.Count, dt_purCode.Columns.Count);
            dtWord.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDot;
            dtWord.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDot;
            
            //循环往表格里赋值
            for (int i = 1; i <= dt_purCode.Rows.Count; i++)
            {
                for (int j = 1; j <= dt_purCode.Columns.Count; j++)
                {

                    dtWord.Rows[i].Cells[j].Range.Text = dt_purCode.Rows[i - 1][j - 1].ToString();

                    dtWord.Rows[i].Cells[j].Range.Font.Size = 10;  //设置表格字体 10

//如果表格字段包含箭头  设置字体颜色为红色
                    if (dt_purCode.Rows[i - 1][j - 1].ToString().Contains("↓") || dt_purCode.Rows[i - 1][j - 1].ToString().Contains("↑"))
                    {

                        dtWord.Rows[i].Cells[j].Range.Font.TextColor.RGB = (int)Microsoft.Office.Interop.Word.WdColor.wdColorRed; 
                    }
                }
            }
                

            }
            catch
            {
                throw;
            }
            finally
            {
                doc.Close();
                application.Quit();
            }
相关推荐
Brookty几秒前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再14 分钟前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
Anson Jiang14 分钟前
浏览器标签页管理:使用chrome.tabs API实现新建、切换、抓取内容——Chrome插件开发从入门到精通系列教程06
开发语言·前端·javascript·chrome·ecmascript·chrome devtools·chrome插件
唐青枫19 分钟前
从入门到进阶:C#.NET Stopwatch 计时与性能测量全攻略
c#·.net
会开花的二叉树23 分钟前
继承与组合:C++面向对象的核心
java·开发语言·c++
长河2 小时前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
Cyan_RA92 小时前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
再见晴天*_*5 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
lqjun08277 小时前
Qt程序单独运行报错问题
开发语言·qt
hdsoft_huge9 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot