背景:

年11月,微软宣布作为ECMA国际主要合作伙伴,将其开发的基于XML的文件格式标准化,称之为"Office Open XML" 。Open XML的引进使office文档结构更加标准化,并且开发人员使用 Open XML SDK可以直接进行很多简单的操作,但是仍然有很多差距,如将word文档转换成其他格式,比如PDF,图像,或者HTML等。这就是Spire.Doc 来拯救开发人员的原因。

文档转换:

我将在文章的其余部分来介绍Spire.Doc可以适用的多种场景。文中展示的所有例子均可以在 Spire.Doc 的DEMO中找到,你可以很容易地下载并使用它们。我的例子是一个简单的控制台程序,当然它也支持其他平台,如web项目或者Silverlight项目等。

用他们自己的话来说,Spire.Doc 宣称:"Spire.Doc for .NET 可以将word文件转换成最常见和流行的格式。"

为了开始使用Spire.Doc,你首先需要添加Spire.Doc,Spire.License 和 Spire.Pdf引用到你的项目中,这两个组件是打包在Spire.Doc中的.

你需要一个有效的 Spire.Doc授权文件才能使用这个类库,否则它将在文档中显示"评估版本"警告。设置授权非常简单,只要设置授件位置,类库就会自动完成验证等工作。还有其他的方法来加载授权文件,比如动态指定或将其加入到资源文件中。详细的文档可以参考这里。.

FileInfo licenseFile = new FileInfo(@"C:\ManasBhardwaj\license.lic");

Spire.License.LicenseProvider.SetLicenseFile(licenseFile);

为了验证基本的功能,我使用了一个word文档包含简单文字、一张图片和一个表格。如下图所示,你也可以在Demo中找到。

类库的核心当然是Document类。所以我们从创建Document对象开始,然后加载文档信息。简单得只需要三行代码,你就可以把一个相当复杂包含不同元素的Word文档转换成一个完全不同的文档,比如HTML格式文档。

//Create word document

Document document = new Document();

document.LoadFromFile(@"This is a Test Document.docx");

插入图片

//Insert image

].AppendPicture(Image.FromFile(image.png);

插入表格

]);

privatevoid addTable(Section section)

{

  //create a table with border

  Spire.Doc.Table table = section.AddTable(true );

  String[] header = { "Column A", "Column B", "Column C" };

  String[][] data ={

  newString[]{"Value 1","V 1.1","V 1.2"} ,

  newstring[]{"Value 2","V 2.1","V 2.2"}

};

, header.Length);

];

Frow.IsHeader = true;

; //unit: point, 1point = 0.3528 mm

; i < header.Length; i++)

{

);

  Frow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;

  Paragraph p = Frow.Cells[i].AddParagraph();

  p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Left;

  TextRange txtRange = p.AppendText(header[i]);

  txtRange.CharacterFormat.Bold = true;

}

; r < data.Length; r++)

{

];

;

  dataRow.HeightType = TableRowHeightType.Exactly;

  dataRow.RowFormat.BackColor = Color.Empty;

; c < data[r].Length; c++)

{

)

);

  dataRow.Cells1.CellFormat.VerticalAlignment = VerticalAlignment.Middle;

);

}

}

}

转化成HTML文档

//将文件转化成HTML文档

document.SaveToFile("Test.html", FileFormat.Html);

所以,现在我们已经有了准备转换的文档可以使用。我们来看看在这背后发生了什么。你可以看到产生了一个新的HTML文档,还有额外的文件和文件夹。这些文件和文件夹都不过是用于保留原word文档中存在的额外信息用的。在这一范例中,文件夹中包含了原有文档中我们添加的那张测试图片,而样式表中所包含了表格的样式定义。所以,这个转换不仅转换了数据,还尽力保证了类似样式这些额外信息的完整性。

样式表看起来是这样的:

只是一个简单参数的不同,就可以让你可以把文档转换成另一种格式,比如下述的PDF。最另我满意的是,所有这些都是基于一个框架,我们可以将文档转换成不同的格式而不需要额外的样式和配置定义。而且请注意,所有这些都是在内存中完成的,因此你不需要额外的系统权限。我记得以前在一个项目中当我们想转换时,为了导出PDF我们不得不将数据从一个组件传到另一个,而且还不能在不同的文档格式中保持相同的布局。

转成PDF

//把文件转化成PDF

document.SaveToFile("Test.Pdf", FileFormat.PDF);

只需很少的代码你就得到了下面的PDF文档。因为我使用的是试用版本所以有授权警告。当你使用正式版时,就没有警告了。

转换成XML

种文件格式。我自己最喜欢XML格式。它具有很好的扩展性,你可以在文档中对数据做很多处理。比如,你可以使用word文档创建一个来源于原始文件的XML文档。

//Convert the file to Xml

document.SaveToFile("Test.Xml", FileFormat.Xml);

转成图片

那么转成图片呢?Spire.Doc支持把文档直接转换成图片,所有.net框架支持的图片格式都可以。

//保存成图片

, ImageType.Metafile);

image.Save("Test.tif", System.Drawing.Imaging.ImageFormat.Tiff);

总结

在转换word文档到其他任何格式文件方面,Spire.Doc 是一个功能非常强大,而且易于使用的产品。如果你也使用其报表功能,那就更好了。和其他第三方厂商一样,通常有很多方法完成同一件事,但是你需要权衡购买或再使用的成本和产品带来的方便。

从许可和定价上来说,与市场上其他类似产品相比,它并不是很贵。所以,在我看来这是一个非常划算的花销。

【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式的更多相关文章

  1. 批量转换word文档到pdf文件

    最近在整理每周的工作记录.因为每周的工作记录大都是单独的word文件,有时候忘记了也不容易找出来,一个个打开查找太费劲,因此想着把这些文件通过word2016的另存为功能转换为pdf,然后永Acrob ...

  2. C#中使用Spire.docx操作Word文档

    使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法. 之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比 ...

  3. 转换Word文档为PDF文件

    1.使用 Office COM组件的Microsoft.Office.Interop.word.dll库 该方法需要在电脑上安装Office软件,并且需要Office支持转换为PDF格式,如果不支持, ...

  4. WebBrowser打开Word文档的一些注意事项

    WebBrowser打开Word文档的一些注意事项 分类: C#word2010-03-31 21:26 5640人阅读 评论(3) 收藏 举报 webbrowser文档browser工具object ...

  5. Java将数据写入word文档(.doc)

    Java可用org.apache.poi包来操作word文档.org.apache.poi包可于官网上下载,解压后各jar作用如下图所示: 可根据需求导入对应的jar. 一.HWPFDocument类 ...

  6. JAVA:借用OpenOffice将上传的Word文档转换成Html格式

    为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...

  7. HTML转换成word文档

    1工具类保存word文件 public class WordAction { public static void SaveAsWord(string fileName, string pFileNa ...

  8. OpenOffice Word文档转换成Html格式

    为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...

  9. POI加dom4j将数据库的数据按一定格式生成word文档

    一:需求:将从数据库查处来的数据,生成word文档,并有固定的格式.(dom4j的jar包+poi的jar包) 二:解决:(1)先建立固定格式的word文档(2007版本以上),另存成为xml文件,作 ...

随机推荐

  1. 自动抓取java堆栈

    参数1 进程名字,参数2 最大线程数 例: pid为8888,达到1000个线程时自动抓取堆栈信息 ./autojstack.sh 8888 1000 & #!/bin/bashfileNam ...

  2. sphinx下的max_matches取值对SetLimits的影响

    使用PHP在客户端执行 $s -> SetLimits(0, 15, 1200); 传递的第三个参数,是服务器端设定当前查询的结果集大小为1200,但是运行结果,确实$s最终查询得到的结果为空值 ...

  3. Hibernate学习笔记(三)Hibernate生成表单ID主键生成策略

    一. Xml方式 <id>标签必须配置在<class>标签内第一个位置.由一个字段构成主键,如果是复杂主键<composite-id>标签 被映射的类必须定义对应数 ...

  4. 【调试】路由器设置不了静态IP -- clwu

    办公室的路由器是IP-COM,原来可以设置静态IP 的,但后来不知道为什么比较长一段时间内设置不了,原来设置的静态IP 也不见了.现象是这样 什么都没有. 今天的网络被网管重调整过了,需要重新设置静态 ...

  5. HDOJ-ACM1009(JAVA) (传说中的贪心算法)分为数组实现 和 封装类实现

    转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5564311.html 这个道题有几点要注意的: 数组存放的类型:float或double 打印的格式:(如果只是 ...

  6. URAL-1987 Nested Segments 线段树简单区间覆盖

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1987 题意:给定n条线段,每两条线段要么满足没有公共部分,要么包含.给出m个询问,求当前 ...

  7. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  8. S3

    S3是Amazon EMR的一部分,它提供了一些Wikipedia的浏览统计数据,这些浏览数据的格式便于Spark测试.

  9. 从Mac的Finder中访问你的iCloud文档

    [从Mac的Finder中访问你的iCloud文档] 从OS X 10.7.2开始,iCloud就深入Mac当中,我们也可以在Finder中访问储存在iCloud中的文件,甚至当你拥有多台Mac的时候 ...

  10. json的一些问题

    使用json不仅可以这么写,{"ARCHIVAL_CODE":"String","TDQLR":"String"} 还可 ...