程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【好文翻譯】一步一步教你使用Spire.Doc轉換Word文檔格式

【好文翻譯】一步一步教你使用Spire.Doc轉換Word文檔格式

編輯:C#入門知識

背景:

本文試圖證明和審查Spire.Doc的格式轉換能力。很長的一段時間裡,為了操作文檔,開發人員不得不在服務器上安裝Office軟件。首先,這是一個很糟糕的設計和實踐。第二,微軟從沒打算把Office作為一個服務器組件,它也用來在服務器端解釋和操作文檔的。於是乎,產生了類似Spire.Doc這樣的類庫。當我們討論這個問題時,值得一提的是 Office Open Xml. Office Open XML (也有非正式地稱呼為 OOXML 或OpenXML) 是一種壓縮的, 基於XML的文件格式,由微軟開發,用於表現電子表格,展示圖表,演示和文字處理等。在2005年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

DocPicture picture=document.Sections[0].Paragraphs[0].AppendPicture(Image.FromFile(image.png);

插入表格

 

addTable(document.Sections[0]);

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"}

};

table.ResetCells(data.Length + 1, header.Length);

TableRow Frow = table.Rows[0];

Frow.IsHeader = true;

Frow.Height = 15; //unit: point, 1point = 0.3528 mm 

for (int i = 0; i < header.Length; i++)

{

  Frow.Cells[i].CellFormat.BackColor = Color.FromArgb(142, 91, 155, 213);

  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;

for (int r = 0; r < data.Length; r++)

{

  TableRow dataRow = table.Rows[r + 1];

  dataRow.Height = 15;

  dataRow.HeightType = TableRowHeightType.Exactly;

  dataRow.RowFormat.BackColor = Color.Empty;

for (int c = 0; c < data[r].Length; c++)

{

if (r % 2 == 0)

  dataRow.Cells1.CellFormat.BackColor = Color.FromArgb(137, 222, 230, 246);

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

  dataRow.Cells1.AddParagraph().AppendText(data[r]1);

}

}

}

轉化成HTML文檔

//將文件轉化成HTML文檔

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

所以,現在我們已經有了准備轉換的文檔可以使用。我們來看看在這背後發生了什麼。你可以看到產生了一個新的HTML文檔,還有額外的文件和文件夾。這些文件和文件夾都不過是用於保留原word文檔中存在的額外信息用的。在這一范例中,文件夾中包含了原有文檔中我們添加的那張測試圖片,而樣式表中所包含了表格的樣式定義。所以,這個轉換不僅轉換了數據,還盡力保證了類似樣式這些額外信息的完整性。

 

樣式表看起來是這樣的:

 

只是一個簡單參數的不同,就可以讓你可以把文檔轉換成另一種格式,比如下述的PDF。最另我滿意的是,所有這些都是基於一個框架,我們可以將文檔轉換成不同的格式而不需要額外的樣式和配置定義。而且請注意,所有這些都是在內存中完成的,因此你不需要額外的系統權限。我記得以前在一個項目中當我們想轉換時,為了導出PDF我們不得不將數據從一個組件傳到另一個,而且還不能在不同的文檔格式中保持相同的布局。

轉成PDF

//把文件轉化成PDF

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

只需很少的代碼你就得到了下面的PDF文檔。因為我使用的是試用版本所以有授權警告。當你使用正式版時,就沒有警告了。

轉換成XML

在FileFormat 類中顯示它最多支持24種文件格式。我自己最喜歡XML格式。它具有很好的擴展性,你可以在文檔中對數據做很多處理。比如,你可以使用word文檔創建一個來源於原始文件的XML文檔。

//Convert the file to Xml

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

 轉成圖片

那麼轉成圖片呢?Spire.Doc支持把文檔直接轉換成圖片,所有.net框架支持的圖片格式都可以。

//保存成圖片

Image image = document.SaveToImages(0, ImageType.Metafile);

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

總結

在轉換word文檔到其他任何格式文件方面,Spire.Doc 是一個功能非常強大,而且易於使用的產品。如果你也使用其報表功能,那就更好了。和其他第三方廠商一樣,通常有很多方法完成同一件事,但是你需要權衡購買或再使用的成本和產品帶來的方便。

從許可和定價上來說,與市場上其他類似產品相比,它並不是很貴。所以,在我看來這是一個非常劃算的花銷。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved