最近在一个项目碰到一个问题,要用WPF打开并显示打印Office文档。包括Word, Excel, 和PowerPoint文档。找了很多资料,解决方案之一:调用第三方开发的Word, Excel, PowerPoint解析控件,三个不同的人开发的,要使用三个控件才能解决这个问题。而且有些控件对解析表格和图片还存在问题。
所以只好使用第二个解决方案,把Office文档先转换成XPS,然后用DocumentViewer来显示XPS。
所以解决方案的操作流程是:打开Office文档=》转换并在硬盘生成XPS=》加载显示XPS=》任务完成后删除XPS。
以下代码适用于目标计算机已安装Office2007或以上版本,对于Office 2003,需要下载 Office升级插件
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD
那我们开始吧:
在一个工程文件添加如下引用:
Microsoft.Office.Interop.Excel(C:/Program Files/Microsoft Visual Studio 10.0/Visual Studio Tools for Office/PIA/Office12/Microsoft.Office.Interop.Excel.dll)
Microsoft.Office.Interop.PowerPoint(C:/Program Files/Microsoft Visual Studio 10.0/Visual Studio Tools for Office/PIA/Office12/Microsoft.Office.Interop.PowerPoint.dll)
Microsoft.Office.Interop.Word(C:/Program Files/Microsoft Visual Studio 10.0/Visual Studio Tools for Office/PIA/Office12/Microsoft.Office.Interop.Word.dll)
OFFICE(C:/Windows/assembly/GAC/office/12.0.0.0__71e9bce111e9429c/OFFICE.DLL)
ReachFramework
(C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.0/ReachFramework.dll
以上的引用可直接在引用窗口点击“浏览”,直接找到相应的DLL,并添加就可以了。
我们先完成最关键的步骤:Office文档转成XPS
首先创建一个转换类:
OfficeToXps.cs
代码如下: