Aspose.Word 的常见使用

起因

因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成。下面是通过DocumentBuilder来设计Word的,但是和使用模型拼接的差不多,原理基本一致。

思路

这里是说使用Aspose.Word的使用思路,只想某个功能是怎么使用的可以跳过

代码都是人写的,所以每一个代码都有他的风格,了解这些代码作者的思路有利于我们去使用它。

简单使用Word,无非就是文字,图片,表格以及页面的样式。如果了解Css和英语好点的基本都是可以在VS里面点出来的,最难的就是最开始的入门的。

入门,简单的示例

Aspose.Words.Document doc = new Document();//新建一个空白的文档
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
doc.Save("文件保存的全路径");
这里面的`builder`相当于一个画笔,提前给他规定样式,然后他就能根据你的要求画出你想画的Word。这里的画笔使用的是就近原则,当上面没有定义了builder的时候,会使用默认的格式,当上面定义了某个格式的时候,使用最近的一个(即最后一个改变的样式)

设定Word页面的样式

builder.PageSetup.PaperSize = PaperSize.A4;//A4纸
builder.PageSetup.Orientation = Aspose.Words.Orientation.Portrait;//方向
builder.PageSetup.VerticalAlignment = Aspose.Words.PageVerticalAlignment.Top;//垂直对准
builder.PageSetup.LeftMargin = 42;//页面左边距
builder.PageSetup.RightMargin = 42;//页面右边距

关于页面的设置,基本都在PageSetup中,根据需要和正常的名字,基本都可以猜出来

写入一段文字

//获取ParagraphFormat对象,关于行的样式基本都在这里
var ph = builder.ParagraphFormat;
//文字对齐方式
ph.Alignment = ParagraphAlignment.Center;
// 单倍行距 = 12 , 1.5 倍 = 18
ph.LineSpacing = 12; //获取Font对象,关于文字的大小,颜色,字体等等基本都在这个里面
Aspose.Words.Font font = builder.Font;
//字体大小
font.Size = 22;
//是否粗体
font.Bold = false;
//下划线样式,None为无下划线
font.Underline = Underline.None;
//字体颜色
font.Color = Color.Black;//C#的颜色
font.Color = System.Drawing.ColorTranslator.FromHtml("#3b3131");//自定义颜色
//设置字体
font.NameFarEast = "宋体";
//添加文字
builder.Write("添加的文字");
//添加回车
builder.Writeln();
//添加文字后回车
builder.Writeln("添加的文字后回车");

基本使用到的就是这几个了,如果需要更多可以自己在VS里面点后试试看。

注意:`builder`在`Write`的时候,默认会使用上面规定的格式,除非你在使用`Write`前更新画笔的格式,所以,当你在做样式很多的Word的时候注意更改画笔的格式。

添加图片

builder.InsertImage("图片绝对地址");
builder.InsertImage("图片绝对地址", 80, 80);//可以控制图片的宽高

基本是这样使用,当然还有是其他很多种的参数,比如ImageStream等,在使用的时候可以根据需要使用

添加表格

//开始添加表格
Aspose.Words.Tables.Table table = builder.StartTable();
//开始添加第一行,并设置表格行高
RowFormat rowf = builder.RowFormat;
rowf.Height = 40;
// ....这里rowf可以有很多的设置
//插入一个单元格
builder.InsertCell();
//设置单元格是否水平合并,None为不合并
builder.CellFormat.HorizontalMerge = CellMerge.None;
//设置单元格是否垂直合并,None为不合并
builder.CellFormat.VerticalMerge = CellMerge.None;
//设置单元格宽
builder.CellFormat.Width = 40;
//单元格垂直对齐方向
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
//单元格水平对齐方向
builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
builder.CellFormat.FitText = true;//单元格内文字设为多行(默认为单行,会影响单元格宽)
//单元格内添加文字
builder.Write("这是第一行第一个单元格");
builder.InsertCell();
builder.CellFormat.Width = -1;//当不需要规定这个单元格的宽度的时候,设置成-1,会是自动宽度
builder.Write("这是第一行第二个单元格");
//结束第一行
builder.EndRow();
//结束表格
builder.EndTable();
//设置这个表格的上下左右,内部水平,垂直的线为白色(当背景为白色的时候就相当于隐藏边框了)
table.SetBorder(BorderType.Left, LineStyle.Double, 1, Color.White, false);
table.SetBorder(BorderType.Top, LineStyle.Double, 1, Color.White, false);
table.SetBorder(BorderType.Right, LineStyle.Double, 1, Color.White, false);
table.SetBorder(BorderType.Bottom, LineStyle.Double, 1, Color.White, false);
table.SetBorder(BorderType.Vertical, LineStyle.Double, 1, Color.White, false);
注意:最重要的是不用忘记开始表格,开始一行,结束一行,结束表格
里面的设置可以根据个人需要修改,也可以不写使用默认的

表格的合并单元格

//横向合并单元格
builder.CellFormat.HorizontalMerge = CellMerge.None;
builder.CellFormat.HorizontalMerge = CellMerge.First;
builder.CellFormat.HorizontalMerge = CellMerge.Previous;
//纵向合并单元格
builder.CellFormat.VerticalMerge = CellMerge.None;
builder.CellFormat.VerticalMerge = CellMerge.First;
builder.CellFormat.VerticalMerge = CellMerge.Previous;
备注:当不需要合并单元格的时候设置为 None,当需要合并单元格的时候,第一个设置为First,并正常写入这个单元格应该存储的内容。后面的到了要和这个单元格合并的单元格的时候,不需要写入内容,只需要设置成Previous即可。

Aspose.Word 的常见使用(2018-12-26 更新版)的更多相关文章

  1. OPPO Developers Conference(2018.12.26)

    时间:2018.12.26地点:北京国家会议中心

  2. 微信小程序 - 接口更新记录以及解决方案(2018/12/26)

    2018/8/17 - 背景音频需要在app.json添加requireBackGroundModes 2018/9/12 - 微信更改获取用户信息接口/获取位置等接口 - button 2018/1 ...

  3. Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)

    MSDN于2011年5月12日,最新发布简体中文Windows 7 Ultimate 旗舰版 SP1 DVD镜像安装包,分32位和64位两个版本.最新发行代号分别是:677486(32位),67740 ...

  4. (转载)Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)

    MSDN于2011年5月12日,最新发布简体中文Windows 7 Ultimate 旗舰版 SP1 DVD镜像安装包,分32位和64位两个版本.最新发行代号分别是:677486(32位),67740 ...

  5. 2018.12.26 Mac下的Eclipse在编辑Spring配置文件xml时自动提示类class包名配置

    1.先查看下自己的Eclipse是什么版本,步骤如下: 2.选择Install New Software 3.输入网址 http://dist.springsource.com/release/TOO ...

  6. 2018.12.26 考试(哈希,二分,状压dp)

    T1 传送门 解题思路 发现有一个限制是每个字母都必须相等,那么就可以转化成首尾的差值相等,然后就可以求出\(k-1\)位的差值\(hash\)一下.\(k\)为字符集大小,时间复杂度为\(O(nk) ...

  7. 利用Aspose.Word控件实现Word文档的操作

    Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般 ...

  8. 黄聪:利用Aspose.Word控件实现Word文档的操作(转)

    撰写人:伍华聪  http://www.iqidi.com  Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及 ...

  9. 调试大叔V2.1.0(2018.12.17)|http/s接口调试、数据分析程序员辅助开发神器

    2018.12.17 - 调试大叔 V2.1.0*升级http通讯协议版本,完美解决Set-Cookie引起的系列问题:*新增Content-Type编码格式参数,支持保存(解决模拟不同网站或手机请求 ...

随机推荐

  1. 【转载】企业服务总线Enterprise service bus介绍

    企业服务总线(Enterprise service bus). 以往企业已经实现了很多服务, 构成了面向服务的架构,也就是我们常说的SOA. 服务的参与双方都必须建立1对1 的联系,让我们回顾一下SO ...

  2. 微信企业号调用js-sdk注意事项

    企业号应用必须添加可信域名,域名必须通过备案,可以是子域名,如果网站带端口,一定也要加上端口号...踩坑记

  3. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)

    http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code ...

  4. mysql数据库存放路径

    在你的my.ini 文件中定义的参数 datadir 指定的目录中. SQL code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mysql> select @@da ...

  5. #啃underscore源码 一、root对象初始化部分

    最近由于比赛要交了,以及工作室屯了各种项目,实在忙不过来刷题,所以很久没更blog了(良心痛),现在自己的水平还是渣代码堆砌 + 简单的增删改查(悲伤) 所以痛定思痛,决定之后的任务是先补学校课堂的知 ...

  6. easyUI下拉列表点击事件的使用

    可以通过input 和select来创建下拉列表 其中select的创建如下: 通过json来创建js数组 [{ "id":1, "text":"te ...

  7. C#温度报警

    using System; using System.Collections.Generic; using System.Text; using System.Collections; using S ...

  8. 替换Android自带apk【转】

    本文转载自:http://www.voidcn.com/article/p-gonowdjh-vz.html 安卓自带的app放在/system/app/下,当我们想要替换这些应用时可以参考如下步骤: ...

  9. 函数,#include <>和#include " "区别

    l 4..函数定义到使用分三步:1.声明.2.定义函数.3.调用函数. 2.函数的定义格式:返回值 函数名(形参列表){ 函数体; return } 命名规则:1.只能由字母.数字.下划线或者美元符号 ...

  10. [USACO 2017DEC] Haybale Feast

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5142 [算法] 首先用RMQ预处理S数组的最大值 然后我们枚举右端点 , 通过二分求 ...