c#word文档:3.向Word文档中插入表格/4.读取Word文档中表格

 --向Word文档中插入表格--

(1)在OfficeOperator项目的WordOperator类中定义向Word文档插入换页的函数NewPage

(2)在WordOperator类中定义向Word文档插入表格的函数InsertTable

using Microsoft.Office.Interop.Word;// 引入Microsoft.Office.Interop.Word命名空间
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace OfficeOperator1
{public class WordOperator1{//为WordOperator1声明两个操作Word文档的私有对象Application WordApp;                                   //Word应用对象Document WordDoc;                                      //Word文档对象public WordOperator1()  //在WordOperator1的构造函数中创建WordApp{WordApp = new Application();                           //创建Word应用对象WordApp.Visible = true;                                //创建完成后是否显示Word文档}//定义用于创建Word文档的函数CreateWord,代码如下:public void CreateWord()//创建Word文档{WordDoc = WordApp.Documents.Add();                                     //创建Word文档对象WordDoc.PageSetup.Orientation = WdOrientation.wdOrientPortrait;        //横板还是竖板WordDoc.PageSetup.LeftMargin = WordApp.CentimetersToPoints(0.5f);      //左边距WordDoc.PageSetup.RightMargin = WordApp.CentimetersToPoints(0.5f);     //右边距WordDoc.PageSetup.TopMargin = WordApp.CentimetersToPoints(0.5f);       //上边距WordDoc.PageSetup.BottomMargin = WordApp.CentimetersToPoints(0.5f);    //下边距WordDoc.PageSetup.PageWidth = 400;                                     //页宽,单位:像素WordDoc.PageSetup.PageHeight = 600;                                    //页高,单位:像素}public void SaveWord(string fileName)//文档保存{object FileName = fileName;                            //文档名称object FileFormat = WdSaveFormat.wdFormatDocument;     //Word文档保存格式object LockComments = false;                           //是否锁定批注object Password = "";                                  //打开Word文档密码object WritePassword = "";                             //修改Word文档密码object AddToRecentFiles = true;                       //是否将文档添加到近期使用的文件菜单中WordDoc.SaveAs(ref FileName, ref FileFormat, ref LockComments, ref Password, ref AddToRecentFiles, ref WritePassword);        //保存Word文档}public void QuitWord()//关闭Word文档{((_Document)WordDoc).Close();                          //关闭Word文档((_Application)WordApp).Quit();                        //退出Word应用}//退出Word应用程序public void SetPageHeader(string Text)//页眉中添加文字{WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;     //设置视图类型WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;//选定页眉WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(Text);//向页眉中添加文字WordApp.Selection.ParagraphFormat.Alignment =                          //设置居中对齐WdParagraphAlignment.wdAlignParagraphCenter;WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//选定主文档}public void SetPageFooter(string Text)//页脚中添加文字{WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;     //设置视图类型WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryFooter;//选定页脚WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(Text);   //向页脚中添加文字WordApp.Selection.ParagraphFormat.Alignment =                  //设置居中对齐WdParagraphAlignment.wdAlignParagraphCenter;WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; //选定主文档}/// <summary>/// 设置页码/// </summary>/// <param name="isFirstPage"></param>public void InsertPageNumber(bool isFirstPage){object Alignment = WdPageNumberAlignment.wdAlignPageNumberRight;//页码对齐方式object IsFirstPage = isFirstPage;                                      //是否从首页开始//对所有的页眉和页脚设置页码WdHeaderFooterIndex WdFooterIndex = WdHeaderFooterIndex.wdHeaderFooterPrimary;WordApp.Selection.Sections[1].Footers[WdFooterIndex].PageNumbers.Add(ref Alignment, ref IsFirstPage);}/// <summary>/// Word文档添加文字/// </summary>/// <param name="Text"></param>/// <param name="FontSize"></param>/// <param name="FontColor"></param>/// <param name="FontBold"></param>/// <param name="TextAlignment"></param>/// <param name="FontName"></param>public void InsertText(string Text, int FontSize, WdColor FontColor, int FontBold,WdParagraphAlignment TextAlignment, string FontName){WordApp.Application.Selection.Font.Size = FontSize;            //字体大小WordApp.Application.Selection.Font.Bold = FontBold;            //是否粗体,0-否,1-是WordApp.Application.Selection.Font.Color = FontColor;          //字体颜色WordApp.Application.Selection.ParagraphFormat.Alignment = TextAlignment;    //字体排布WordApp.Application.Selection.Font.Name = FontName;            //字体名称WordApp.Application.Selection.TypeText(Text);                  //文字内容}/// <summary>/// 换行/// </summary>public void NewLine(){WordApp.Application.Selection.TypeParagraph();                 //换行}/// <summary>/// 向Word文档中插入图片/// </summary>/// <param name="FileName"></param>/// <param name="Width"></param>/// <param name="Height"></param>public void InsertPicture(string FileName, int Width, int Height){object LinkToFile = false;                                     //是否连接到文件object SaveWithDocument = true;                                //是否保存到文档中object Range = System.Reflection.Missing.Value;WordApp.Selection.ParagraphFormat.Alignment =                  //设置段落对齐方式WdParagraphAlignment.wdAlignParagraphCenter;InlineShape inlineShape = WordDoc.Application.Selection.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Range);  //添加图片if (Width != 0 || Height != 0){inlineShape.Width = Width;                                 //设置图像宽度inlineShape.Height = Height;                               //设置图像高度}}/// <summary>/// 换页/// </summary>public void NewPage(){object BreakType = WdBreakType.wdSectionBreakNextPage;         //换页WordDoc.Application.Selection.InsertBreak(ref BreakType);      //插入换页}/// <summary>/// 添加表格/// </summary>/// <param name="dataSet"></param>public void InsertTable(DataSet dataSet){WordDoc.Tables.Add(WordApp.Selection.Range,                    //添加表格dataSet.Tables[0].Rows.Count, dataSet.Tables[0].Columns.Count);WordDoc.Tables[1].Rows.HeightRule = WdRowHeightRule.wdRowHeightAtLeast;    //行高规则WordDoc.Tables[1].Rows.Height = WordApp.CentimetersToPoints(0.8f);//设置行高WordDoc.Tables[1].Range.Font.Size = 10;                        //设置字体大小WordDoc.Tables[1].Range.Font.Name = "宋体";                      //设置字体类型WordDoc.Tables[1].Range.ParagraphFormat.Alignment =            //设置段落对齐WdParagraphAlignment.wdAlignParagraphCenter;WordDoc.Tables[1].Range.Cells.VerticalAlignment =              //设置表格元素垂直对齐WdCellVerticalAlignment.wdCellAlignVerticalCenter;WordDoc.Tables[1].Borders[WdBorderType.wdBorderLeft].LineStyle =  //设置左边框WdLineStyle.wdLineStyleDouble;WordDoc.Tables[1].Borders[WdBorderType.wdBorderRight].LineStyle = //设置右边框WdLineStyle.wdLineStyleDouble;WordDoc.Tables[1].Borders[WdBorderType.wdBorderTop].LineStyle =   //设置上边框WdLineStyle.wdLineStyleDouble;WordDoc.Tables[1].Borders[WdBorderType.wdBorderBottom].LineStyle = //设置下边框WdLineStyle.wdLineStyleDouble;WordDoc.Tables[1].Borders[WdBorderType.wdBorderHorizontal].LineStyle =  //设置水平边框WdLineStyle.wdLineStyleSingle;WordDoc.Tables[1].Borders[WdBorderType.wdBorderVertical].LineStyle =   //设置垂直边框WdLineStyle.wdLineStyleSingle;//将数据集中的数据填充到表格中for (int i = 1; i <= dataSet.Tables[0].Rows.Count; i++){for (int j = 1; j <= dataSet.Tables[0].Columns.Count; j++){WordDoc.Tables[1].Cell(i, j).Range.Text = dataSet.Tables[0].Rows[i - 1][j - 1].ToString();}}}}}

 (3)将数据库中的学生信息表添加到Word文档中。在CreateWord项目的main函数中添加代码如下:

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM student_info", 
         "Data Source=.\\SQLEXPRESS;Initial Catalog=student;Integrated Security=True");
     DataSet dataSet = new DataSet();
     adapter.Fill(dataSet);                                                     //填充数据集
     word.InsertTable(dataSet);                                         //插入表格

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Word;
using OfficeOperator1;namespace CreateWord1
{    internal class Program{static void Main(string[] args){WordOperator1 word = new WordOperator1();word.CreateWord();         //创建Word文档word.SetPageHeader("C#经典实例");                                  //添加页眉word.SetPageFooter("第17章  访问office");                           //添加页脚word.InsertPageNumber(true);                                          //添加页码word.InsertText("Word文档创建成功!", 16, WdColor.wdColorBlack, 1,WdParagraphAlignment.wdAlignParagraphCenter, "宋体");             //添加文字word.NewLine();                                            //换行word.InsertText("Word文档创建成功!", 18, WdColor.wdColorRed, 0,WdParagraphAlignment.wdAlignParagraphDistribute, "黑体");         //添加文字word.InsertPicture(Directory.GetCurrentDirectory() + "\\189.png", 100, 75);//添加图片SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM staq_info","Data Source=.\\SQLEXPRESS;Initial Catalog=aq;Integrated Security=True");DataSet dataSet = new DataSet();adapter.Fill(dataSet);                                                     //填充数据集word.InsertTable(dataSet);                                         //插入表格word.SaveWord(Directory.GetCurrentDirectory() + "\\测试文档11.doc");//保存Word文档word.QuitWord();}}
}

代码中的aq是数据库,staq是数据表格 ,具体参考数据库章节/两篇代码汇总了word1-3章节

启动CreateWord的控制台应用程序:

--读取Word文档中表格 --

【实现过程】
(1)在OfficeOperator项目的WordOperator类中定义打开Word文档的函数OpenWord

public void OpenWord(string fileName)
     {
         object FileName = fileName;                            //Word文档文件名称
         WordDoc = WordApp.Documents.Open(ref FileName);        //打开Word文档
     }

(2)在WordOperator类中定义读取Word文档中表格的函数ReadTable,代码如下:

 public string ReadTable()
 {
     string stringTable = string.Empty;
     foreach (Table table in WordDoc.Tables)
     {//遍历Word文档中的表格
         for (int row = 1; row <= table.Rows.Count; row++)
         {//遍历表格中的行
             for (int column = 1; column <= table.Columns.Count; column++)
             {//遍历表格中的列
                 stringTable += table.Cell(row, column).Range.Text;//读取表格元素
                 stringTable = stringTable.Remove(stringTable.Length - 2, 2);//删除\r\a
                 stringTable += "\t";
             }
             stringTable += "\n";
         }
     }
     return stringTable;
 }

(3)创建一个名为OpenWord的控制台应用程序,为其添加对OfficeOperator项目的引用

using OfficeOperator1;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace OpenWord
{internal class Program{static void Main(string[] args){WordOperator1 word = new WordOperator1();word.OpenWord(Directory.GetCurrentDirectory() + "\\测试文档.doc");   //打开Word文档Console.WriteLine(word.ReadTable());                               //读取Word文档中的表格word.QuitWord();Console.ReadKey();}}
}

(4)在程序路径准备 测试文档.doc(这里是上一章创建保存的文档复制过来):

 启动OpenWord的控制台应用程序:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索APP内测分发的全过程(APP开发)

什么是APP内测分发探索APP内测分发的全过程&#xff1f; APP内测分发是在应用程序开发过程中探索APP内测分发的全过程&#xff0c;开发者将应用程序的测试版或预发布版分发给特定用户进行测试、反馈和评估的一种方式。这是一个非常重要的环节&#xff0c;可以有效地提高应用的…

详解SDRAM基本原理以及FPGA实现读写控制

文章目录 一、SDRAM简介二、SDRAM存取结构以及原理2.1 BANK以及存储单元结构2.2 功能框图2.3 SDRAM速度等级以及容量计算 三、SDRAM操作命令3.1 禁止命令&#xff1a; 4b1xxx3.2 空操作命令&#xff1a;4b01113.3 激活命令&#xff1a;4b00113.4 读命令&#xff1a;4b01013.5 写…

mac如何打开exe文件?如何mac运行exe文件 如何在Mac上打开/修复/恢复DMG文件

在macOS系统中&#xff0c;无法直接运行Windows系统中的.exe文件&#xff0c;因为macOS和Windows使用的是不同的操作系统。然而&#xff0c;有时我们仍然需要运行.exe文件&#xff0c;比如某些软件只有Windows版本&#xff0c;或者我们需要在macOS系统中运行Windows程序。 虽然…

如何安全的使用密码登录账号(在不知道密码的情况下)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 1、打开工具&#xff0c;进入账号密码模块&#xff0c;如图 2、看到鼠标移动到密码那一栏有提示&#xff0c;按住Ctrl或者Alt点击或者双击就能复制内容&…

正版Office-Word使用时却提示无网络连接请检查你的网络设置 然后重试

这是购买电脑时自带的已经安装好的word。看纸箱外壳有office标记&#xff0c;但是好像没有印系列号。 某天要使用。提示&#xff1a;无网络连接请检查你的网络设置。 经过网上高手的提示&#xff1a; 说要勾选勾选ssl3.0、TLS1.0、1.1、1.2。 我的截图 我电脑进去就缺1.2. …

PCIe总线-MPS MRRS RCB参数介绍(四)

1.概述 PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载&#xff0c;即Data Payload。Data Payload的长度和MPS&#xff08;Max Payload Size&#xff09;、MRRS&#xff08;Max Read Request Size&#xff09;和RCB&#xff08;Read Completion Boundary&#xff0…

C++ 抽象机制

抽象机制 1. 虚函数 使用关键字virtual 声明的函数&#xff0c;意思是可能随后在其派生类中重新定义。 纯虚函数 在声明的末尾使用0 的函数&#xff0c;说明是纯虚函数。 抽象类 含有纯虚函数多的类称为抽象类(abstract class). 多态类型 如果一个类负责为其他一些类提供接…

unity入门——按钮点击了却无法调用函数

查阅了一番都没有解决问题&#xff0c;最后发现问题是由button的Onclick()事件绑定了代码脚本而不是游戏对象导致的。 如果Onclick()事件绑定的是代码脚本&#xff0c;则下拉框里没有函数&#xff0c;但是点击MonoScript后能手动填入函数名&#xff08;本以为这样就能实现调用…

State.initState() must be a void method without an `async` keyword错误解析

文章目录 报错问题报错的代码 错误原因解决方法解析 另外的方法 报错问题 State.initState() must be a void method without an async keyword如下图&#xff1a; 报错的代码 报错的代码如下&#xff1a; overridevoid initState() async{super.initState();await getConf…

openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__

文章目录 openssl3.2 - exp - 使用默认的函数宏&#xff0c;在release版中也会引入__FILE__概述笔记验证是否__FILE__在release版下也能用&#xff1f;将openssl编译成release版的&#xff0c;看看CRYPTO_free()是否只需要一个参数就行&#xff1f;将工程中的openssl相关的库换…

重定义大语言模型的记忆能力:对抗性压缩如何挑战现有测量法

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; Rethinking LLM Memorization through the Lens of Adversarial Compression 引言&#xff1a;探索大型语言模型的记忆能力 在当今信息时代&#xff0c;大型…

Window(Qt/Vs)软件添加版本信息

Window&#xff08;Qt/Vs&#xff09;软件添加版本信息 文章目录 Window&#xff08;Qt/Vs&#xff09;软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…

#ESP32S3R8N8建立工程(VSCODE)点亮LED

1.参考文档 【立创ESP32S3R8N8】IDF入门手册 - 飞书云文档 (feishu.cn)https://lceda001.feishu.cn/wiki/GOIlwwfbIi1SC3k8594cDeFVn8g 2.建立工程 3.运行效果 4.更改配置 5.插播 之前配置的环境是有问题的&#xff0c;就算有自动检测也要仔细检查&#xff0c;必须严格按照以…

VMware安装ubuntun虚拟机使用桥接模式无法上网问题解决

问题&#xff1a;最近准备使用VMware虚拟机搭建k8s集群服务&#xff0c;因为需要在同一个网段下&#xff0c;我使用桥接的方式&#xff0c;我发现主机在使用有线连接时虚拟机网络连接正常&#xff0c;但是使用无线网就显示连接不上网络。 解决方法 一、查看网络连接&#xff…

aardio封装库) 微软开源的js引擎(ChakraCore)

前言 做爬虫肯定少不了JavaScript引擎的使用&#xff0c;比如在Python中现在一般用pyexecjs2来执行JavaScript代码&#xff0c;另外还有一些其他执行JavaScript的库&#xff1a; https://github.com/eight04/node_vm2: rpc调用nodejs&#xff0c;需要安装nodehttps://github.…

Spring Data JPA数据批量插入、批量更新真的用对了吗

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 前言 在前两篇文章已经介绍过&#xff0c;在使用Spring Data JPA时&#xff0c;DAO层的Respository通过继承J…

BigKey的危害

1.2.1、BigKey的危害 网络阻塞 对BigKey执行读请求时&#xff0c;少量的QPS就可能导致带宽使用率被占满&#xff0c;导致Redis实例&#xff0c;乃至所在物理机变慢 数据倾斜 BigKey所在的Redis实例内存使用率远超其他实例&#xff0c;无法使数据分片的内存资源达到均衡 Redis阻…

Python中动画显示与gif生成

1. 动画生成 主要使用的是 matplotlib.animation &#xff0c;具体示例如下&#xff1a; import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np fig, ax plt.subplots() t np.linspace(0, 3, 40) g -9.81 v0 12 z g * t**2 / …

新建stm32工程模板步骤

1.先使用keil新建一个project的基本代码 2.stm32启动文件添加 将stm32的启动文件&#xff0c;在原工程当中新建一个Start文件夹把相关的启动文件放到文件夹当中 然后还需要找到下面三个文件 stm32f10x.h是stm32的外设寄存器的声明和定义&#xff0c;后面那两个文件用于配置系…

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube 前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建&#xff0c;DSM版为 7.2.1-69057 Update 5。 简介 MetaTube 是一个媒体服务器插件&#xff0c;主要用于 Emby 和 Jellyfin 媒体服务器。它的主要功能是从互…