C#中使用Spire.docx操作Word文档
使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法。
之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比docx多一些实用的方法。
所以在此对自己摸索到的spire的一些方法,做一些简单的记录。
public void DOCXcreat3()
{
try
{ Document document = new Document();
Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center; //获取第一个Section对象
Section sec = document.Sections[0];
//设置纸张大小
//sec.PageSetup.PageSize = PageSize.Letter;
//分别设置四个方向的页边距
sec.PageSetup.Margins.Top = 70f;
sec.PageSetup.Margins.Left = 50f;
sec.PageSetup.Margins.Bottom = 60f;
sec.PageSetup.Margins.Right = 50f; TextRange rangeTop = paragraph.AppendText("水平鉴定仪");
section.AddParagraph(); paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;
rangeTop.CharacterFormat.Bold = true;
rangeTop.CharacterFormat.FontName = "Arial";
rangeTop.CharacterFormat.FontSize = 20;
//rangeTop.CharacterFormat.Position = 30;是整个字符块的高度 //初始化一个Table类对象,并添加第一个table(24行7列)
Table table1 = section.AddTable(true);
table1.ResetCells(24, 7);
//table1.Width = 100%;
//这里是设置表格的整体样式
//table1.ApplyStyle(DefaultTableStyle.LightGridAccent3); //第一行
table1.Rows[0].Height = 40;
table1.ApplyHorizontalMerge(0, 0, 2);
table1.ApplyHorizontalMerge(0, 3, 6); //注意TextRange和Paragraph的不同点。
Paragraph paragraph1 = table1.Rows[0].Cells[0].AddParagraph();
TextRange range1 = paragraph1.AppendText("设备ID:" + "18635445");
range1.CharacterFormat.FontName = "Arial";
range1.CharacterFormat.FontSize = 16; Paragraph paragraph2 = table1.Rows[0].Cells[3].AddParagraph();
TextRange range2 = paragraph2.AppendText("仪器编号:" + "FH5919");
range2.CharacterFormat.FontName = "Arial";
range2.CharacterFormat.FontSize = 16; //垂直居中
table1.Rows[0].Cells[0].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
table1.Rows[0].Cells[3].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
//水平居中
paragraph1.Format.HorizontalAlignment = HorizontalAlignment.Center;
paragraph2.Format.HorizontalAlignment = HorizontalAlignment.Center; string[] subtitle = new string[7] { "标准角值", "盘左Ⅰ","盘左Ⅱ","盘右Ⅰ","盘右Ⅱ","平均","差值"};
//第二行
for (int n = 0; n < 7; n++) {
Paragraph paraRow2 = table1.Rows[1].Cells[n].AddParagraph();
paraRow2.AppendText(subtitle[n]);
paraRow2.Format.HorizontalAlignment = HorizontalAlignment.Center; } //此处是将单元格分割,获取额外的单元格
//table1.Rows[1].Cells[6].SplitCell(2, 1);
//table1.Rows[1].Cells[6].Width = 10; //在这里从数据记录中循环读取
for (int i = 0; i < 20; i++)
{
table1.Rows[i + 2].Height = 20;
for (int j = 0; j < 7; j++) {
Paragraph para = table1.Rows[i + 2].Cells[j].AddParagraph();
TextRange rowsContent = para.AppendText("{你你你");
rowsContent.CharacterFormat.FontName = "Arial";
//rowsContent.CharacterFormat.FontSize = 15;
para.Format.HorizontalAlignment = HorizontalAlignment.Center;
}
} //可替换为[records + 1]
table1.Rows[22].Height = 36;
table1.ApplyHorizontalMerge(22, 0, 6);
Paragraph paraLast = table1.Rows[22].Cells[0].AddParagraph();
paraLast.AppendText("归零后计算结果");
paraLast.Format.HorizontalAlignment = HorizontalAlignment.Center; table1.Rows[23].Height = 36;
table1.ApplyHorizontalMerge(23, 0, 6);
Paragraph paraLast2 = table1.Rows[23].Cells[0].AddParagraph();
paraLast2.Format.HorizontalAlignment = HorizontalAlignment.Center;
paraLast2.AppendText("23.0"); for (int i = 1; i < 24; i++) {
for (int j = 0; j < 7; j++) {
table1.Rows[i].Cells[j].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
}
} //保存并运行文件
string filePath = "D:\\测试文档\\";
document.SaveToFile(filePath + "Sample2.docx", FileFormat.Docx); }
catch (Exception e)
{
Console.WriteLine(e); }
}
上方的代码编译之后如图:

一些基本的方法可以去看代码,都有相应的注释。
然后先一些基本的需要注意的操作进行总结:
与Docx一样的是,spire也是通过对document的操作实现word的具体设置。不过Spire中要比Docx多section这么一个中间层,在section的基础上进行对cell或者paragraph的操作。
添加新的表格也要在section才可以新增table。
其余的具体的操作其实也大同小异,可以类比。不过需要区分Textrange和Paragraph各自不同的属性。
还需要注意spire的合并单元格的方法格式(row, start,end)。而且合并之后的单元格计数,就是按start为准,这一点和Docx中合并之后单元格从0开始计数就不一样了。
//横向合并:
table1.Rows[0].Height = 40;
table1.ApplyHorizontalMerge(0, 0, 2);
table1.ApplyHorizontalMerge(0, 3, 6);
//纵向合并:合并第一列第3、4个单元格
table1.ApplyVerticalMerge(0, 2, 3);
然后其他的方法与功能,暂时我就没有用到了,如果以后深入使用的话,会持续的更新,如果有错误,也请提出来,我会及时改正的。
这里是一片大佬写的很全面的文章:
https://www.cnblogs.com/Yesi/p/4280949.html
C#中使用Spire.docx操作Word文档的更多相关文章
- C#使用Docx操作word文档
C#使用Docx编写word表格 最近接手了一个小Demo,要求使用Docx,将Xml文件中的数据转换为word文档,组织数据形成表格. 写了已经一周,网络上的知识太零碎,就想自己先统计整理出来,方便 ...
- 利用POI操作不同版本号word文档中的图片以及创建word文档
我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写 ...
- iText操作word文档总结
操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...
- C#操作Word文档(加密、解密、对应书签插入分页符)
原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...
- Java文件操作系列[3]——使用jacob操作word文档
Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...
- 利用Python操作Word文档【图片】
利用Python操作Word文档
- C#开源组件DocX处理Word文档基本操作(二)
上一篇 C#开源组件DocX处理Word文档基本操作(一) 介绍了DocX的段落.表格及图片的处理,本篇介绍页眉页脚的处理. 示例代码所用DocX版本为:1.3.0.0.关于版本的区别,请参见上篇,而 ...
- 2.QT中操作word文档
Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A QAxContainer模块允许我们使用COM对象并且可以 ...
- c#中操作word文档-四、对象模型
转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型 (.Net Perspective) 本文主要针对在Visual St ...
随机推荐
- C++ 一串数字三位一节,用逗号隔开表示
#include <iostream> #include <string> #include <sstream> using namespace std; stri ...
- Python3基础 getatime getctime getmtime 文件的最近访问 + 属性修改 + 内容修改时间
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Linux批量更改文件后缀-转载
一.rename解决 1. Ubuntu系统下 rename 's//.c//.h/' ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2. CentOS5.5系统下 rename . ...
- JavaScript 问题解决 -- parseInt("08")或parseInt("09")转换返回0的解决方法
不小心范了一个低级错误,这个问题也是很多初学者容易忽略滴,它就是js中的整数转换函数parseInt(string, radix). 使用parseInt转换"01" - &q ...
- MVC 枚举绑定 DropDownList
/// <summary> /// 枚举转化下拉列表数据集 /// </summary> /// <param name="type">类型&l ...
- ADO.NET 批量插入
在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而 在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们 ...
- 【Jmeter】Linux(Mac)上使用最新版本Jmeter(5.0)做性能测试
本文我们一起来学习在Linux(Mac)上利用Jmeter进行性能测试并生成测试报告的方法. 环境准备 JDK 访问这个地址 [JDK11.01],根据实际环境下载一个JDK. Jmeter Jmet ...
- MongoDB查询修改操作语句命令大全
MongoDB查询更新操作语句命令大全 查询操作 1.条件操作符 <, <=, >, >= 这个操作符就不用多解释了,最常用也是最简单的db.collection.find({ ...
- nginx File not found 错误
使用php-fpm解析PHP,"No input file specified","File not found"是令nginx新手头疼的常见错误,原因是php ...
- win7创建 VirtualBox COM 对象失败。 应用程序现在将终止。 Callee RC: E_NOINTERFACE (0x80004002)
win7创建 VirtualBox COM 对象失败. 应用程序现在将终止. Callee RC: E_NOINTERFACE (0x80004002) 启动VirtualBox提示这个错误, ...