C# VS2012操作word文档 (二).插入表格图片

2023-11-10

在上一篇文章"C# VS2012创建word文档.(一)"中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14.0 Object Library实现创建文档,而这篇文章将讲述如何添加表格和图片,因为我在C#联系数据库做销售系统中需要打印表单,我想以图表形式显示在word中,同时生成相应的饼状图或柱状图,所以才有查阅了相关资料,完成文章,供大家分享.其中使用openFileDialog控件也是希望大家学习了解下.

一. 界面设置

设计界面如下图所示,其中对用的5个textBox和2个button控件在图中标明,同时添加一个openFileDialog控件,在插入图片时点击"选择"按钮实现打开一个选择图片窗体,选择后在textBox5只读中显示相应图片的路径.

二. 源代码

1.引用空间

//引用word对象类库和命名空间
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;

2.添加外部变量

object path;                      //声明文件路径变量
MSWord.Application wordApp;       //声明word应用程序变量
MSWord.Document worddoc;          //声明word文档变量    

3.通过openFileDialog实现显示打开图片路径

点击"选择"按钮在生成的button2_Click(object sender, EventArgs e)函数中添加如下代码,其中openFileDialog1.Filter是设置打开文件类型,此处为jpg和bmp型,然后把选择的图片路径赋值给textBox5.代码如下图所示:

//点击"选择"添加图片 textBox5为只读
private void button2_Click(object sender, EventArgs e)
{
    //定义openFileDialog打开图片对话框文件类型
    openFileDialog1.Filter = "BMP格式图片(*.bmp)|*.bmp|JPG格式图片(*.jpg)|*.jpg";
    if (openFileDialog1.ShowDialog() == DialogResult.OK)  //点击"确定"按钮执行
    {
        if (openFileDialog1.FileName != "")               //图片路径赋值给textBox5
        {
            this.textBox5.Text = openFileDialog1.FileName;
        }
    }
}

运行程序后,添加图片时openFileDialog的效果如下图所示,右下角有两种图片选择格式供选择:

4.插入表格和图片

点击"创建"按钮在生成的函数button1_Click(object sender, EventArgs e)中添加实现向word中插入表格和图片的代码,如下:

//点击"创建"按钮实现创建word文件
private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "")
    {
        MessageBox.Show("请输入路径和文档名信息");
    }
    else
    { 
        //初始化变量
        object Nothing = Missing.Value;                              //表示缺少的值
        object format = MSWord.WdSaveFormat.wdFormatDocumentDefault; //格式docx
        wordApp = new MSWord.ApplicationClass();                     //声明一个wordAPP对象
        worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);           
        //定义word文档中表格
        MSWord.Table table = worddoc.Tables.Add(wordApp.Selection.Range,
            Convert.ToInt32(textBox3.Text),Convert.ToInt32(textBox4.Text),
            ref Nothing,ref Nothing);                                //定义一个表格对象
        table.Borders.Enable = 1;                                    //默认表格没有边框
        //填充表格中内容
        for (int i = 1; i <= Convert.ToInt32(textBox3.Text); i++)    //string转换int型
        {
            for (int j = 1; j <= Convert.ToInt32(textBox4.Text); j++)
            {
                table.Cell(i, j).Range.Text= "(" + i + "行," + j + "列)" ;
            }
        }
        //定义插入图片是否为外部链接
        Object linktofile = false;
        Object savedocument = true;
        Object range = worddoc.Paragraphs.Last.Range;                //定义图片插入word位置
        worddoc.InlineShapes.AddPicture(textBox5.Text,ref linktofile,ref savedocument,ref range);
        //保存文档
        path = textBox2.Text + "\\" + textBox1.Text;             //设置文件保存路劲
        worddoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing, 
            ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, 
            ref Nothing, ref Nothing, ref Nothing, ref Nothing);
        //关闭文档
        worddoc.Close(ref Nothing, ref Nothing, ref Nothing);  //关闭worddoc文档对象
        wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);   //关闭wordApp组对象
        MessageBox.Show("文档创建成功!");
    }
}

三. 运行结果

点击运行,填写如下图所示的内容,其中插入表格函数行数=8,列数=5并插入图片:

点击“创建”后,它会在E盘下创建一个test.docx的word文档,同时填写内容如下图所示:

四. 补充知识

其中在插入图片中我使用了一个InlineShapes.AddPicture函数,它相应的使用方法如下图所示,来自http://technet.microsoft.com/zh-cn/library/ff822636

五. 总结

这篇文章主要是使用C#向创建word文档中添加表格和图片的操作,同时如果怎样使用C#创建word还有不明白的可以参考前一篇文章http://blog.csdn.net/eastmount/article/details/11235577同时该文章有些内容思想来自刘丽霞等编写的《C#范例开发大全》,感谢作者,同时希望大家能看看这本书籍,最后希望文章对大家有帮助,同时有不足或错误的地方,见谅!

(By:Eastmount 2013-9-8 夜1点http://blog.csdn.net/eastmount/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# VS2012操作word文档 (二).插入表格图片 的相关文章

随机推荐

  • 科普什么是JS混淆加密解密以及其价值

    JavaScript 混淆加密是一种将 JavaScript 代码转换为不易被人阅读和理解的形式的技术 它通常用于保护代码的知识产权和减少被恶意修改的风险 使用 JavaScript 混淆加密有一些好处和价值 首先 混淆加密可以保护代码的知
  • SpringBoot 直接返回 Json格式对象(报错:返回对象为空{})

    文章目录 1 需求描述 2 代码展示 3 原因分析 4 解决方案 5 效果展示 6 结束语 1 需求描述 我们现在要干一个什么事情呢 我们要在浏览器输入一个请求地址 然后我们的后端就给我返回一个User对象即可 并且我希望以Json的格式返
  • Pycharm下载+安装+破解

    安装 进入到Pycharm官网下载区域 选择与系统对应的下载包然后点击下载 https www jetbrains com pycharm download section windows 破解 https blog csdn net u0
  • UnityVR--UIManager--UI管理2

    目录 前言 UIManger的实现 1 需要用到的变量和数据 2 在构造中的工作 3 初始化面板 4 显示面板 5 隐藏面板和隐藏所有面板 6 其他小工具 在场景中实现 1 不同面板的类型设置 2 场景中的设置 前言 接前篇 上一篇已经有了
  • 前后端分离的项目——图书管理系统(上)

    文章目录 项目搭建 使用elementUI 主体布局 后台服务搭建 实现分页模糊查询 后台CRUD 新增 修改 删除 表单校验和克隆模块 克隆出管理员模块 登录前后台 登录 全局异常处理 登录前端 数据安全 项目sql文件 点击下载 项目搭
  • 企业应如何无缝保护其云工作负载?

    企业为了保护自己的云环境 可能已经采取了保护云身份 强化云安全态势 配置强大的云访问控制等措施 然而 除此之外还需要做一件事 云工作负载保护平台 即CWPP 云工作负载保护平台会保护在企业的云上运行的工作负载 这些工作负载与构成云环境基础的
  • MyBatis-Plus代码生成器

    文章目录 1 在SpringBoot项目中导入Maven依赖 2 编写配置 3 运行后的效果 AutoGenerator 是 MyBatis Plus 的代码生成器 通过 AutoGenerator 可以快速生成 Entity Mapper
  • 金笛短信开发控件(API)

    http www sendsms cn download 金笛短信开发控件 JindiSMSControl OCX 点击放大 温馨提示 控件模块名称为 JindiSMSControl ocx 本控件使用时需要SmsCore dll和DBEn
  • 【ES】补充RestHighLevelClient

    目录 依赖 获取连接 阿里云提供的API 创建Index 创建mappings XContentBuilder 删除数据 指定ID 依赖
  • 夜莺V6ga8架构介绍-接近正式版的最新调整

    前言 本篇是夜莺监控V6最新版本 v6 0 0 ga8 的架构介绍 ga8版本开始和之前的v6版本在边缘机房部署场景 做了一点优化 去除了边缘机房中夜莺监控模块 n9e pushgw数据转发 n9e alert告警引擎 对中心节点机房中my
  • Eclipse打开HTML文件出现中文乱码

    一 问题描述 有时候在使用eclipse打开HTML文件时出现中文乱码问题 这是由于编码问题导致的 需要设置一下系统的编码就可以正常显示了 二 解决办法 解决步骤如图所示
  • 将一个目录下的所有文件的文件名存入一个数组中

    CSDN看到的 放在这里先 有时间研究一下 using System using System Collections using System IO namespace ZZ class ZZTest static void Main s
  • 修改GeoNode主页

    1 修改title变量值 项目使用了 Django 的 sites 框架 SITE NAME 来自于当前站点的设置 可以在 Django 管理后台的 Sites 部分找到并修改它 通常 你可以通过访问 http your domain co
  • 代码能力,程序员自我修养之基石

    目录 持续学习 阅读优秀的代码 练习编程 与他人合作 提升解决问题的能力 总结 在软件开发中 代码是程序员实现业务逻辑和功能的基础 是软件系统最基本的构成单元 对程序员的重要性不言而喻 在工作中 我们写的代码代表了自己的工作水平和编码能力
  • Linux终端执行shell脚本,提示权限不够

    在学习dubbo过程中 上传自己写的脚本 执行的时候提示 权限不够 从网上了解到是因为没有为脚本赋权限 解决方法是使用chmod命令为shell脚本赋予权限 chmod 777 service demo sh 参考 http blog cs
  • SQL巩固以及数据库、表结构优化

    SQL巩固 数据库 表结构优化 前言 对于初级程序开发工程师而言 SQL是很多人的弱项 为此我给大家来做一下总结 希望能够帮到你们 课程说明 1 介绍项目实战开发过程中常用的MySQL函数及常用语法 并且分析三种联合查询原理及如何使用 什么
  • STM32单片机初学8-SPI flash(W25Q128)数据读写

    当使用单片机进行项目开发 涉及大量数据需要储存时 例如使用了屏幕作为显示设备 常常需要存储图片 动画等数据 单靠单片机内部的Flash往往是不够用的 如STM32F103系列 内部Flash最多只能达到512KByte 假设要储存240 2
  • linux list 类型,Redis数据类型之List类型

    List类型及操作 List是一个链表结构 主要功能是push pop 获取一个范围的所有值等等 操作中key理解为链表名字 Redis的list类型其实就是一个每个子元素都是string类型的双向链表 我们可以通过push pop操作从链
  • java中HashSet的使用详解

    http jingyan baidu com article 48206aead61355216bd6b34a html 一 添加方法 1 add value 方法 可以向set中添加一个元素 注意 set中不能存储重复的元素 可以存储nu
  • C# VS2012操作word文档 (二).插入表格图片

    在上一篇文章 C VS2012创建word文档 一 中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14 0 Object Library实现创建文档 而这篇文章将讲述如何添加表格和图片 因为我在C 联系数据库做