自制 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 群组默认的权限不足,需要另外处理权限、安全性的设置。

项目使用VS2017打开,.net 2.0下运行。 项目使用的微软官方的插件方法,可以将doc, docx, xls, xlsx, ppt, pptx文件转换为pdf文件,但是需要: 1、用户需要首先安装一个SaveAsPDFandXPS.exe的工具; 2、如果用户是xp系统,则: 2.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 2.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项,然后从office 2007安装包里面安装Microsoft Office Document Imaging(因为2010删除了这个选项,好麻烦~),否则转换失败; 2.3 xp不能安装office 2013/2016; 3、如果用户是win7系统,则: 3.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 3.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win7 + office 2010不需要安装Microsoft Office Document Imaging) 3.3 如果用户安装的是office 2013或2016,则不需要额外选项; 4、如果用户是win10系统,则: 4.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application这个选项,(win10 + office 2007不需要安装Microsoft Office Document Imaging)否则转换失败; 4.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win10 + office 2010不需要安装Microsoft Office Document Imaging) 4.3 如果用户安装的是office 2013或2016,则不需要额外选项; 5、如果用户安装了wps 2016或者wps 2019也可以正常转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值