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 ...
随机推荐
- CodeForces 76A Gift - 最小生成树
The kingdom of Olympia consists of N cities and M bidirectional roads. Each road connects exactly tw ...
- BZOJ 1063 道路设计(树形DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1063 题意:给出一个无环图( 也就是树,但是也有可能是森林),代表一个国家的城市.1是首 ...
- Python3基础 函数 有参数有返回值 对传入的参数加1
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- K条最短路径算法(KSP, k-shortest pathes):Yen's Algorithm
参考: K最短路径算法之Yen's Algorithm Yen's algorithm 基于网络流量的SDN最短路径转发应用 K条最短路径算法:Yen's Algorithm 算法背景 K 最短路径问 ...
- P4 Tutorials Flowlet Switching
Github链接: Exercise 2: Implementing TCP flowlet switching P4 Tutorials Flowlet Switching 最近P4社区更新了Tut ...
- HDU 6128 Inverse of sum(同余)
http://acm.hdu.edu.cn/showproblem.php?pid=6128 题意:有一个a数列,并且每个数都小于p,现在要求有多少对$(i,j)$满足$\frac{1}{a_i+a_ ...
- python3.7 安装pyopengl,环境搭建
安装环境:win10 64位操作系统,python3.7 一.安装py库 需要用pip 安装 pip install PyOpenGL PyOpenGL_accelerate 可能会报错, 是因为没有 ...
- nohup 与 &
&的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫). 但是要注 ...
- C89_一些函数
C89 string.h 中的函数: 复制函数 memcpy memmove strcpy strncpy 串接函数 strcat strncat 比较函数 memcmp strcmp strcoll ...
- _proto_和prototype区别
推荐一篇阅读:http://cometosay.com/2016/08/31/js-proto.html es中创建对象的方法 (1)对象字面量的方式 (2)new 的方式 (3)ES5中的`Obje ...