支持国货,利用C#操作WPS Office2013 实例
网上已有很多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 实例相关推荐
- 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
转载自 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时 ...
- java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解
sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...
- 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...
前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...
- python怎么算积分_利用python求积分的实例
利用python求积分的实例 python的numpy库集成了很多的函数.利用其中的函数可以很方便的解决一些数学问题.本篇介绍如何使用python的numpy来求解积分. 代码如下: # -*- co ...
- python实现冒泡排序完整算法_利用python实现冒泡排序算法实例代码
利用python实现冒泡排序算法实例代码 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数 ...
- python的取整和取余_python实现取余操作的简单实例
python实现取余操作的方法: 可以利用求模运算符(%)来实现.求模运算符可以将两个数相除得到其余数.我们还可以使用divmod()函数来实现取余操作,具体方法如:[divmod(10,3)]. 在 ...
- 利用itext操作pdf从数据库导出大量数据--添加水印(四)
[原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...
- 利用itext操作pdf从数据库导出大量数据--功能汇总(一)
[原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...
- 数据挖掘 python roc曲线_利用scikitlearn画ROC曲线实例
一个完整的数据挖掘模型,最后都要进行模型评估,对于二分类来说,AUC,ROC这两个指标用到最多,所以 利用sklearn里面相应的函数进行模块搭建. 具体实现的代码可以参照下面博友的代码,评估svm的 ...
最新文章
- python pip 换源
- C语言 字符串的读取
- mybatis多条件查询
- android 毕业设计 文献翻译,android毕业设计外文翻译.doc
- php解决跨域问题6,关于php:tp6-通过全局中间件-解决跨域问题
- BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
- “金融与安全大数据”专题导读
- No resource found that matches the given name 'Theme.AppCompat.Light'.
- 【本周上榜!】看雪论坛精华优秀文章分享与点评
- 用姿态补偿雷达数据畸变的文字想法
- Bluetooth LE for iOS demo. LightBlue like demo.
- 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(十)...
- 如何实现一个二维码支持微信支付和支付宝支付
- 通过高德api获取经纬度
- TLAB(Thread Local Allocation Buffer)
- element的el-input-number的默认值的问题
- 国外服装设计师的网站(全)
- 计算机信息的容量单位是什么,信息的基本容量单位是
- ABAQUS错误代码system error code 1073741819
- 马化腾:我就是一个工程师 测试公司产品是最大爱好
热门文章
- 机电类能转计算机应用嘛,广东机电职业技术学院可以转专业吗,广东机电职业技术学院新生转专业政策...
- openpyxl修改图表中纯色填充的透明度和颜色
- python 操作excel坐标_Python - openpyxl 读写操作Excel
- java获取电脑配置_使用Java获取cao作系统和硬件信息
- KDBC——9293详解
- 深度学习:线性回归模型
- 基于Android的医院挂号APP的设计与实现
- IOS学习笔记68 -- 开发的一些奇巧淫技
- 在Linux操作系统下的PPPoE拨号上网
- 简单谈谈操作系统内核的组成和架构