开发环境:Windows7 64位+Word2007 +WPS Office 专业增强版+Visual Studio 2010

软件安装:安装Microsoft Office 2007 后再安装WPS 2016。

异常说明:开发机测试先安装Microsoft Office 2013后,再安装Wps2016,系统正常。然后卸载Office2013 后,再到项目中引用WPS相关的DLL时会报错,只能卸载WPS2016后,重新安装OFFICE2007,再安装WPS2016继续开发。

开发步骤如下:

1、打开Visual Studio 2010后新建一个NET2.0应用程序项目。

2、添加WPS对应的引用:

方法一:根据实际需要科添加下面的COM引用

添加引用 -> COM -> Kingsoft Add-In Designer
添加引用 -> COM -> Microsoft Office 11.0 Object Library
添加引用 -> COM -> Upgrade WPS Office 3.0 Object Library(Beta) 
添加引用 -> COM -> Upgrade WPS Presentation 3.0 Object Library(Beta)
添加引用 -> COM -> Upgrade Kingsoft WPS 3.0 Object Library(Beta)
添加引用 -> COM -> Kingsoft WPS Extend Apo 1.0 Object Library(Beta)

---------------------------------------------------------------------------------------------------------------------

方法二:直接添加安装目录下的DLL引用

添加下面的引用后可以使用using WPS;(删除WORD后文件不会丢失)

C:\Windows\assembly\GAC_32\Kingsoft.Office.Interop.Ksoapiv8\98.1.0.0__15d99fb7f8fe5cb4\Kingsoft.Office.Interop.Ksoapiv8.dll

C:\Windows\assembly\GAC_32\Kingsoft.Office.Interop.Wpsapiv8\2.0.0.0__15d99fb7f8fe5cb4\Kingsoft.Office.Interop.Wpsapiv8.dll

添加下面的引用后可以使用using Word;(删除WORD后文件会丢失)
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

添加安装目录下的WPS对应DLL引用(D:\Program Files (x86)\Kingsoft\WPS Office\10.8.2.6726为本机的WPS2016的安装目录)

D:\Program Files (x86)\Kingsoft\WPS Office\10.8.2.6726\office6\etapi.dll //实现excel对PDF转换(Excel文件对应的API)

D:\Program Files (x86)\Kingsoft\WPS Office\10.8.2.6726\office6\wppapi.dll //PPT对PDF转换(PPT文件对应的API)

D:\Program Files (x86)\Kingsoft\WPS Office\10.8.2.6726\office6\wpsapi.dll //WORD对PDF转换(Word文件对应的API)

本例开发直接添加D:\Program Files (x86)\Kingsoft\WPS Office\10.8.2.6726\office6\wpsapi.dll引用即可。

添加引用完成后,项目引用会多出来四个引用如下:

3、新增一个简单的打开WPS文档的类WpsHelper.cs文件代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace WpsTestProject
{
    public class WpsHelper
    {

#region 构造函数
        public WpsHelper()
        { 
            //这里创建wps实例本机安装的是wps2016
            Type type = Type.GetTypeFromProgID("KWps.Application");
            dynamic wps = Activator.CreateInstance(type);
        }
        #endregion

#region 在WPS2016中打开指定路径的文档
        /// <summary>
        /// 在WPS2016中打开指定路径的文档
        /// </summary>
        /// <param name="strFilePath">文件路径</param>
        public void OpenWpsFile(string strFilePath)
        {
            try
            {
                Word.Application wordApp = new Word.Application();//应用对象 
                wordApp.NormalTemplate.Saved = true;
                object fileName = strFilePath;
                object confirmConversions = Type.Missing;
                object readOnly = false;
                object addToRecentFiles = Type.Missing;
                object passwordDoc = Type.Missing;
                object passwordTemplate = Type.Missing;
                object revert = Type.Missing;
                object writepwdoc = Type.Missing;
                object writepwTemplate = Type.Missing;
                object format = Type.Missing;
                object encoding = Type.Missing;
                object visible = Type.Missing;
                object openRepair = Type.Missing;
                object docDirection = Type.Missing;
                object notEncoding = Type.Missing;
                object xmlTransform = Type.Missing;
                Word.Document doc = wordApp.Documents.Open(
                    ref fileName, ref confirmConversions, ref readOnly, ref addToRecentFiles,
                    ref passwordDoc, ref passwordTemplate, ref revert, ref writepwdoc,
                    ref writepwTemplate, ref format, ref encoding, ref visible, ref openRepair,
                    ref docDirection, ref notEncoding, ref xmlTransform);

wordApp.Visible = true;
                wordApp.Activate();//激活文档使文档为当前处理  
            }
            catch (Exception ex)
            {
                MessageBox.Show("打开文件时出错:"+ex);
            }
        }
        #endregion
    }
}
4、窗体中新增一个按钮,添加事件,调用打开WPS文档的类中的方法如下:

代码如下:

private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = true;//该值确定是否可以选择多个文件
            dialog.Title = "请选择文件夹";
            dialog.Filter = "WPS文件(*.wps)|*.wps";
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                WpsHelper myHelper = new WpsHelper();
                myHelper.OpenWpsFile(dialog.FileName);
            }
        }

5、运行程序后选择文件如下:

6、程序调用WPS2016打开文件效果如下:

开发总结:WPS软件要安装专业版的;同一项目中无法同时引用WORD和WPS,可以分开为两个项目;最关键的是WPS对应的DLL引用问题,网上太多的代码,要总结调试,挺麻烦。

源码下载地址:https://download.csdn.net/download/xqf222/10568235

C#调用WPS2016方法和常见问题处理相关推荐

  1. Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法

    1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...

  2. Java控制层怎么调用适配器_java – 从适配器调用片段方法

    我的片段中有一个sendData()方法.此方法启动新的活动.我想从我的ArrayAdapter调用这个方法. 这是我的代码: HomeFragment.java stagAdaper = new S ...

  3. 手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 学习目标 了解智能合约 简单环境搭建 能够利用solidity编写Hello World合约 合约部署 和合约互 ...

  4. 22.调用delay()方法延时执行动画效果

    delay()方法的功能是设置一个延时值来推迟动画效果的执行,它的调用格式为: $(selector).delay(duration) 其中参数duration为延时值,它的单位是毫秒,当超过延时值时 ...

  5. JNI中C调用Java方法

     我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT voi ...

  6. JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法

    JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法 参考文章: (1)JNI调用native方法出现 ...

  7. 如何找到调用当前方法的方法?

    登录C#时,如何得知调用当前方法的方法的名称? 我知道有关System.Reflection.MethodBase.GetCurrentMethod()全部知识,但是我想在堆栈跟踪中比这低一级. 我已 ...

  8. c怎么调用matlab dll,matlab和c++调用DLL方法(最新整理)

    <matlab和c++调用DLL方法(最新整理)>由会员分享,可在线阅读,更多相关<matlab和c++调用DLL方法(最新整理)(6页珍藏版)>请在人人文库网上搜索. 1.M ...

  9. python3.x中的生成器generator调用next方法

    python3.x中的生成器generator调用next方法 标签: 编辑 删除 今天写了一段Python程序,用到了Python的generator.当我用到generator的next方法时,s ...

  10. java方法定义 与调用_Java方法的定义及调用

    Java方法的定义及调用 通过以上内容的学习,可以看出方法是一段可以完成某个特定功能的并且可以被重复利用的代码片段.接下来我们来学习一下方法应该怎么定义以及怎么调用. 定义/声明方法的语法格式如下所示 ...

最新文章

  1. 深度丨当AI遇见区块链,2018年的第一场火,还是第一场泡沫?
  2. 【干货】史上最全的Tensorflow学习资源汇总
  3. php之简单使用数据库
  4. 棋牌类游戏算法–牌分类_快速分类–三向和双枢轴
  5. cocos2d-lua ARPG手机游戏《烈焰遮天》(客户端+服务端+数据库)发布说明
  6. Storm精华问答 | storm与Hadoop有什么区别?
  7. easyexcel安全扫描报php,easyExcel使用以及踩过的坑
  8. Win10 JAVA安装及环境搭建(windows jdk,windows java环境配置)
  9. 信息学奥赛一本通(1253:抓住那头牛)
  10. 判断字符串中是否包含指定字符(JavaScript)
  11. python `__repr__`
  12. java 运行500错误_MyEclipse运行JAVA Web时出现HTTP Status 500错误
  13. NIO 网络编程之群聊系统
  14. ECharts 全新大版本 4.0 正式发布
  15. matlab 获取文件毫秒时间,Matlab:将文件日期以毫秒转换为Matlab时间格式
  16. 原来连续查询mysql天数的sql语句这么简单呀
  17. c语言结构体简单试题,C语言6结构体练习题6
  18. 三页搞定GB2818/SIP/RTP、PS封装
  19. LeetCode - Pascal's Trangle2
  20. 微信跳一跳python自动代码解读1.0

热门文章

  1. 低压电力线载波通信原理
  2. Verilog 38译码器
  3. 切比雪夫多项式c语言csdn,切比雪夫多项式(Chebyshev polynomials)
  4. 巧用电视卡让笔记本屏幕作PS2游戏显示器
  5. python画航线图_数据可视化:python调用pyecharts库绘制航线专题图
  6. 台式计算机网卡驱动不能正常使用,电脑网卡驱动程序不正常怎么办 网卡驱动程序不正常解决方法...
  7. 我的第一个游戏FoodieThebug完成之后的心得体会--子龙山人
  8. Nero Burning ROM 11.0.10500附序列号
  9. 数组中常见的问题,索引越界和空指针异常
  10. Android 各国语言包字符串缩写