1、Spire.Doc for .NET是什么?
Spire.Doc for .NET 是一个专门为开发人员设计的能在任意的 .NET 平台上快速和高质量的创建、读取、写入、转换和打印 word 文档文件的 .NET 组件。当然、作为一个独立的.NET组件、不再需要从电脑上安装Microsoft Word(这方面就有点类似于NOPI组件了)。而且,它可以将Microsoft Word文档创建功能集成到开发者的任何.NET应用程序。
这款组件免费版下载链接地址:Spire.Doc for .NET To Download
2、主要功能点:
支持丰富的Word文档功能:
Spire.Doc的一个常用的功能是动态创建一个完整的Word文档,几乎支持所有的Word文档元素,它们主要包括页面、节段、页眉、页脚、段落、列表、表格、文本、字段、超链接、书签、注解、图片、样式、背景设置、打印功能、文档设置和保护。同时,绘图对象包括形状,文本框、图片和OLE对象,也支持控件。
轻松处理现有Word文档:
Spire.Doc能帮助开发人员处理现有的Word文档,自带搜索、替换、对齐、分页符、填充字段、文档链接、复制、打印以及复杂和深层的嵌套邮件合并等功能。
高质量的文档转换:
Spire.Doc能帮助用户将Doc/Docx格式Word文件保存在流中,另存为网页响应,还完成Doc/Docx格式Word文件与XML、RTF、EMF、TXT、XPS、EPUB、HTML等格式文件之间的相互转换。同时,它也支持将Doc/Docx格式Word文件转换为PDF文件,HTML文件转换为图像文件。
独立组件,无需安装Microsoft Office:
Spire.Doc是一个完全独立的**.NET Word类库**,无需安装Microsoft Office,程序员便可以在任意.NET平台对Word文件进行处理,并且它与其他.NET应用程序兼容。
3、示例:
以下代码将实现Word页眉的设置、文档内容的插入、以及Word表格的插入。
当然使用的时候需要引入以下几个库:
using System;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
Program Code:
Part(1):
///
/// 初始化表格内容数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
///
private static string[][] InitData()
{
string[][] data = {
new string[]{"参与者1","男","12","猪","性格比较内向!" },
new string[]{"参与者2","女","15","狗","无!" },
new string[]{"参与者3", "女", "48","猪","可以!" },
new string[]{"参与者4", "女", "38", "猴", "维纳斯达!" },
new string[]{"参与者5","男","28", "狗", "按时发达丰富的 !" },
new string[]{"参与者6","男","40","猪","性格比爱疯舞较内向!" },
new string[]{"参与者7", "女", "61", "狗", "阿发!" },
new string[]{"参与者8", "女", "62","猪","阿达!" },
new string[]{"参与者9","男","12", "猴", "犬瘟热无若!" },
new string[]{"参与者10","男","63","猪","去玩儿群无!" },
new string[]{"参与者11", "女", "64", "狗", "去玩儿热腾腾!" },
new string[]{"参与者12","男","65", "猴", "外人田!" },
new string[]{"参与者13","男","56","猪","我认为二!" },
new string[]{"参与者14", "女", "76","猪","玩儿翁!" },
new string[]{"参与者15","男","36","猪","特人体各!" },
new string[]{"参与者16","男","54", "狗", "切尔奇翁群!" },
new string[]{"参与者17","男","53","猪","日期二群群!" },
new string[]{"参与者18","男","35", "猴", "玩儿玩儿!" },
new string[]{"参与者19", "女", "66", "狗", "维吾尔文!" },
new string[]{"参与者20","男","23","猪","额外任务图!" },
new string[]{"参与者21","男","56", "猴", "玩儿玩儿无!" },
new string[]{"参与者22","男","41","猪","玩儿玩儿无若!" },
new string[]{"参与者23", "女", "42", "狗", "玩儿翁扔!" },
new string[]{"参与者24","男","43", "狗", "而且我爸突然!" },
new string[]{"参与者25","男","44","猪","委任为v!" },
new string[]{"参与者26","男","55", "猴", "玩儿翁!" },
new string[]{"参与者27", "女", "45","猪","手打黄金分割和热!" },
new string[]{"参与者28","男","27", "狗", "围绕多所无!" },
new string[]{"参与者29", "女", "26","猪","玩儿翁防守打法!" },
new string[]{"参与者30","男","34", "猴", "性格比较内向!" },
new string[]{"参与者31","男","56","猪","胜多负少的服务!" },
new string[]{"参与者32", "女", "20","猪","防守打法试试!" },
new string[]{"参与者33","男","25", "狗", "沙发斯蒂芬!" },
new string[]{"参与者34","男","32", "猴", "让他也发!" },
new string[]{"参与者35", "女", "33","猪","师范生的任务!" },
new string[]{"参与者36","男","21","猴","维特热水!" },
new string[]{"参与者37","男","26","猪","瑞特女!" },
new string[]{"参与者38", "女", "23","猪","对方水电费而!" },
new string[]{"参与者39","男","14", "狗", "韦尔奇二群!" },
};
return data;
}
Part(2):
///
/// 给Word插入表格及数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
///
public static void writeTable(Section section)
{
string[][] data = InitData();
//向word中插入一个表格
Table table = section.AddTable();
table.ResetCells(data.Length + 1, header.Length);//设置表格的行数和列数
//设置表格的上边框
table.TableFormat.Borders.Top.BorderType = BorderStyle.Single;
table.TableFormat.Borders.Top.LineWidth = 0.1F;
table.TableFormat.Borders.Top.Color = Color.Black;
//设置表格的下边框
table.TableFormat.Borders.Bottom.BorderType = BorderStyle.Single;
table.TableFormat.Borders.Bottom.LineWidth = 0.1F;
table.TableFormat.Borders.Bottom.Color = Color.Black;
// ***************** 表格标题 *************************
TableRow row = table.Rows[0];
row.IsHeader = true;
row.Height = 20; //unit: point, 1point = 0.3528 mm
row.HeightType = TableRowHeightType.Exactly;
row.RowFormat.BackColor = Color.Purple;//给表头添加背景颜色
for (int i = 0; i < header.Length; i++)
{
row.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
Paragraph p = row.Cells[i].AddParagraph();
p.Format.HorizontalAlignment = HorizontalAlignment.Left;//居左显示
TextRange txtRange = p.AppendText(header[i]);
txtRange.CharacterFormat.Bold = true;//加粗
txtRange.CharacterFormat.TextColor = Color.White;//表头的字体颜色变为白色
}
for (int r = 0; r < data.Length; r++)
{
TableRow dataRow = table.Rows[r + 1];
dataRow.Height = 20;
dataRow.HeightType = TableRowHeightType.Exactly;
dataRow.RowFormat.BackColor = Color.Empty;
for (int c = 0; c < data[r].Length; c++)
{
if (c == 0)
{
dataRow.Cells[c].CellFormat.BackColor = Color.LightGray;
}
dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
dataRow.Cells[c].AddParagraph().AppendText(data[r][c]);
}
}
}
Part(3):
///
/// 读取空模板、写入数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
public static void writeWord()
{
document.LoadFromFile("../../Files/Templete/template.docx");//加载模板
Section section = document.Sections[0];//获取第一个文档节
//定义页眉信息(左边放一个图片、右边放一个网址)
HeaderFooter header = section.HeadersFooters.Header;
Paragraph p_header = header.AddParagraph();
DocPicture docImg = p_header.AppendPicture(Image.FromFile("../../Files/image/header.jpg"));//给页眉添加一个图片
docImg.Height = 18.5F;//设置图片高度
docImg.Width = 86.1F;//设置图片宽度
p_header.AppendText(" 网址 http://www.baidu.com");//添加右边的页眉内容
//标题
Paragraph p_Title = section.AddParagraph();
TextRange p_txt = p_Title.AppendText("测试数据表格录入");
p_txt.CharacterFormat.FontName = "Console";
p_txt.CharacterFormat.FontSize = 16.0F;//设置字体大小
p_txt.CharacterFormat.Position = 6F;//设置标题与下方正文的行间距
p_txt.CharacterFormat.StylisticSetType = StylisticSetType.StylisticSet01;
p_Title.Format.HorizontalAlignment = HorizontalAlignment.Center;//标题居中显示
//正文内容
Paragraph p_Content = section.AddParagraph();
TextRange pc_txt = p_Content.AppendText(" 这里可以写一些介绍的文字啥的、反正只要你想写啥就写啥了!我这里就随便瞎写一些东西了。肚子里面的墨水儿不多,哈哈哈!");
pc_txt.CharacterFormat.FontSize = 8.0F;
pc_txt.CharacterFormat.Position = 2F;//设置标题与下方正文的行间距
writeTable(section);
document.SaveToFile("../../Files/download/" + DateTime.Now.Ticks + ".docx");
}
Part(4):
public static class SpireDocUitl
{
private static Document document = new Document();//实例化文档节点类
private static string[] header = { "姓名", "性别", "年龄", "生肖", "备注" };//表头数据
///
/// 读取空模板、写入数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
public static void writeWord()
{
......
}
///
/// 给Word插入表格及数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
///
public static void writeTable(Section section)
{
......
}
///
/// 初始化表格内容数据
/// @author 王伟
/// @date 2019-08-09
/// @weather 阴
///
///
private static string[][] InitData()
{
......
}
}
最终效果截图:
这款组件的介绍到这里就先暂时告一段落了!再见。
只要是有意义的事,再晚去做还是有意义的。 ——《返老还童》