网上已有很多C#操作word 打开文件或者C#操作Excel 这类文章。

今天我们要做的就是利用C#操作WPS Office2013 。

WPS Office 的API分V8  V9 版本,其中V9版本兼容Office2007/2010,可以很好的移植和使用原来Office程序的代码,今天我用 word转pdf 为例讲述怎么用C#操作WPS Office2013。

在 Microsoft Office  中,可以通过使用主 interop 程序集 (PIA) 来使用由 Office 应用程序公开的 COM 对象。现在的WPS Office   V9也可以采用这种方式操作,但要注意的是WPS Office 个人版没有这个功能,解决方法就是

方法1、安装WPS 专业版

方法2、 从WPS 专业版中提取WPSOfficePIA,然后拷贝到安装目录安装, 或这里下载http://down.51cto.com/data/1978972

引用程序集:

C:\Windows\assembly\GAC_32\Kingsoft.Office.Interop.Ksoapi\99.1.0.0__15d99fb7f8fe5cb4\Kingsoft.Office.Interop.Ksoapi.dll

C:\Windows\assembly\GAC_32\Kingsoft.Office.Interop.Wpsapi\3.0.0.0__15d99fb7f8fe5cb4\Kingsoft.Office.Interop.Wpsapi.dll

(注:目录可以自己到机器上  C:\Windows\assembly\GAC_32\找,可能文件夹不一样)

下面这个作为例子,它的功能就是把word转pdf,原来word版本,没有修改任何代码。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;namespace Office
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK){//未能找到程序集“Kingsoft.Office.Interop.Wpsapi, Version=3.0.0.0, Culture=neutral, PublicKeyToken=15d99fb7f8fe5cb4”或它的某一个依赖项。系统找不到指定的文件。//【属性】-【生成】-【目标平台】中的"any cpu"修改为X86 如果选择"any cpu".net程序将自动根据平台的按X86还是按X64方式运行,因为我机器是64位的,但是WPS组件只有32的,所以造成程序不匹配而报错。WordExportAsPdf(openFileDialog1.FileName, openFileDialog1.FileName + ".pdf");}}/// <summary>/// 转换为pdf文件,适合(.doc、.docx、.mht、.htm文件类型)/// </summary>/// <param name="fileName"></param>/// <param name="outputFileName"></param>/// <returns></returns>public static string WordExportAsPdf(string fileName, string outputFileName){string isSucceed = "OK";Word.WdExportFormat fileFormat = Word.WdExportFormat.wdExportFormatPDF;Word.Application wordApp = null;///An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Office.exe  Additional information: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。///C:\Users\luozhuang\AppData\Local\Kingsoft\WPS Office\if (wordApp == null) wordApp = new Word.Application();Word._Document wordDoc = null;try{wordDoc = wordApp.Documents.Open(fileName, false, true);wordDoc.ExportAsFixedFormat(outputFileName, fileFormat);}catch (Exception ex){isSucceed = ex.Message;}finally{if (wordDoc != null){wordDoc.Close(false);wordDoc = null;}if (wordApp != null){wordApp.Quit(false);wordApp = null;}}return isSucceed;}}
}

在我的机器上出现两个错误:

未能找到程序集“Kingsoft.Office.Interop.Wpsapi, Version=3.0.0.0, Culture=neutral, PublicKeyToken=15d99fb7f8fe5cb4”或它的某一个依赖项。系统找不到指定的文件。

原因:

1、没有装PIA

2、【属性】-【生成】-【目标平台】中的"any cpu"修改为X86 如果选择"any cpu".net程序将自动根据平台的按X86还是按X64方式运行,因为我机器是64位的,但是WPS组件只有32的,所以造成程序不匹配而报错。

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Office.exe  Additional information: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。

原因:

1、没有装wps

2、因为个人版默认安装目录是C:\Users\luozhuang\AppData\Local\Kingsoft\WPS Office\ ,这个目录似乎有权限问题,我把wps重新安装到C:\WPSOffice,然后重新引用程序集(注:如果你直接引用COM组件会生成个Interop DLL在bin\Debug目录,需要重新引用)就好了。

一个最直接办法就是购买和安装WPS 专业版,因为WPS 专业版安装目录在C:\Program Files (x86) 而不是C:\Users\luozhuang\AppData\Local\

支持国货,利用C#操作WPS Office2013 实例相关推荐

  1. 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

    转载自  实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时 ...

  2. java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...

  3. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...

    前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...

  4. python怎么算积分_利用python求积分的实例

    利用python求积分的实例 python的numpy库集成了很多的函数.利用其中的函数可以很方便的解决一些数学问题.本篇介绍如何使用python的numpy来求解积分. 代码如下: # -*- co ...

  5. python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码

    利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...

  6. python的取整和取余_python实现取余操作的简单实例

    python实现取余操作的方法: 可以利用求模运算符(%)来实现.求模运算符可以将两个数相除得到其余数.我们还可以使用divmod()函数来实现取余操作,具体方法如:[divmod(10,3)]. 在 ...

  7. 利用itext操作pdf从数据库导出大量数据--添加水印(四)

    [原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...

  8. 利用itext操作pdf从数据库导出大量数据--功能汇总(一)

    [原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...

  9. 数据挖掘 python roc曲线_利用scikitlearn画ROC曲线实例

    一个完整的数据挖掘模型,最后都要进行模型评估,对于二分类来说,AUC,ROC这两个指标用到最多,所以 利用sklearn里面相应的函数进行模块搭建. 具体实现的代码可以参照下面博友的代码,评估svm的 ...

最新文章

  1. python pip 换源
  2. C语言 字符串的读取
  3. mybatis多条件查询
  4. android 毕业设计 文献翻译,android毕业设计外文翻译.doc
  5. php解决跨域问题6,关于php:tp6-通过全局中间件-解决跨域问题
  6. BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
  7. “金融与安全大数据”专题导读
  8. No resource found that matches the given name 'Theme.AppCompat.Light'.
  9. 【本周上榜!】看雪论坛精华优秀文章分享与点评
  10. 用姿态补偿雷达数据畸变的文字想法
  11. Bluetooth LE for iOS demo. LightBlue like demo.
  12. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(十)...
  13. 如何实现一个二维码支持微信支付和支付宝支付
  14. 通过高德api获取经纬度
  15. TLAB(Thread Local Allocation Buffer)
  16. element的el-input-number的默认值的问题
  17. 国外服装设计师的网站(全)
  18. 计算机信息的容量单位是什么,信息的基本容量单位是
  19. ABAQUS错误代码system error code 1073741819
  20. 马化腾:我就是一个工程师 测试公司产品是最大爱好

热门文章

  1. 机电类能转计算机应用嘛,广东机电职业技术学院可以转专业吗,广东机电职业技术学院新生转专业政策...
  2. openpyxl修改图表中纯色填充的透明度和颜色
  3. python 操作excel坐标_Python - openpyxl 读写操作Excel
  4. java获取电脑配置_使用Java获取cao作系统和硬件信息
  5. KDBC——9293详解
  6. 深度学习:线性回归模型
  7. 基于Android的医院挂号APP的设计与实现
  8. IOS学习笔记68 -- 开发的一些奇巧淫技
  9. 在Linux操作系统下的PPPoE拨号上网
  10. 简单谈谈操作系统内核的组成和架构