自制 Word、Excel 批轉 PDF 工具

目前做金融業的項目,該公司每天會產生很多 Word、Excel 文檔,需要大量地轉換爲 PDF,除了自己保存外,也要給金融主管機構作爲備份。由於文檔數量很多,希望有工具能在下班前、作完設置後,放着讓機器自動、大量地批轉;除此之外,亦希望有特殊的功能,例如給主管機構的 Excel 文檔,能僅選擇其中某幾個 sheet (工作表) 轉成 PDF。 我找了網絡上許多 PDF 轉換工具,沒有完全符合上述需求的,只好自己用 .NET / VSTO 寫一個。

開發環境:
(1) VS 2008 / Windows Form / VB.NET / VSTO
(2) Office 2007 或 Office 2010 或更高版本 (需要引用新版 Office 裏的 COM 組件)
(3) 2007 Microsoft Office 加載項:Microsoft Save as PDF 或 XPS (可將 Office 2007 或更高版本的文件,導出成 PDF 或 XPS 文件)

執行環境:
(1) .NET Framework
(2) Office 2007 或 Office 2010 或更高版本 (舊版的 Office XP / Office 2003 不行)
(3) 2007 Microsoft Office 加載項:Microsoft Save as PDF 或 XPS (可將 Office 2007 或更高版本的文件,導出成 PDF 或 XPS 文件)

特性:
(1) 支持中文文件名 (免費的 PDFCreator 從 1.2.x 版後即不支持)、中文目錄、中文命名的 sheet。
(2) 可選擇 Excel 的某一個或某幾個 sheet,整合轉換成「單一個」PDF (Adobe Acrobat Standard 亦無此功能,要很貴的 Adobe Acrobat Professional 纔有)。
(3) 可選擇 Excel 的某一個或某幾個 sheet,「各自」轉換成一個 PDF (我在網絡上未找到具備此功能的軟件)。
(4) 批轉的速度很快,大量批轉時亦不曾發生程序崩潰,或佔據 Word、Excel 文件資源不釋放的情形。
(5) 可處理 Excel 裏,整個 sheet 內容全爲空白的不正常情形。

-------------------------------------------------
本帖的示例下載點:
http://files.cnblogs.com/WizardWu/120930.zip
附源碼。若需要簡體中文介面的網友,請自行用 VS 開啓項目後,改寫及編譯。
---------------------------------------------------

執行畫面


圖 1 直接雙擊 .exe 執行


圖 2 分爲兩大功能


功能一 - 大批文件轉換


圖 3 功能一,批轉多個目錄裏的 Word、Excel 文檔 - 轉換前


圖 4 功能一,批轉多個目錄裏的 Word、Excel 文檔 - 轉換後 

 

關鍵代碼 (大批文件轉換)

 


功能二 - Excel 特定 sheet 轉換


圖 5 功能二,可選擇 Excel 的某一個或某幾個 sheet,整合轉換成「單一個」PDF

 

關鍵代碼 (Excel 的某一個或某幾個 sheet,整合轉換成「單一個」PDF)

 

 


圖 6 功能二,可選擇 Excel 的某一個或某幾個 sheet,各自轉換成一個 PDF

 

關鍵代碼 (Excel 的某一個或某幾個 sheet,「各自」轉換成一個 PDF)

 

 

組件引用


圖 7 Office 2007 開發環境。項目需要手動引用三個組件

如上圖 7,VS 裏需要自行引用 Microsoft Office.Tools.Excel、Microsoft Office.Tools.Word 兩個 .NET 組件,以及 Microsoft Excel Object Library 這個 Office 裏的 COM 組件。 但需注意,在開發環境中若安裝的是 Office 2007,則可引用的 Microsoft Excel Object Library 版本爲 1.5 版 (11.0) 或 1.6 版 (12.0),此時編譯的程序,可拿至安裝 Office 2007 及 Office 2010 的用戶機器上執行;但若如下圖 8,在開發環境中安裝的是 Office 2010,則可引用的 Microsoft Excel Object Library 版本爲 1.7 版 (14.0),此時編譯的程序,就只能拿至安裝 Office 2010 的用戶機器上執行,若拿至安裝 Office 2007 的用戶機器上會無法執行。


圖 8 Office 2010 開發環境。項目需要手動引用三個組件


結論

此種轉換功能,亦可寫成 ASP.NET 網頁介面,但不建議。因轉化動作極耗系統資源,若大量批轉容易造成 IIS 死機,且 IIS_WPG、Network Service 羣組默認的權限不足,需要另外處理權限、安全性的設置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章