精华内容
下载资源
问答
  •  今天我们要做的就是利用C#操作WPS Office2013 。  WPS Office 的API分V8 V9 版本,其中V9版本兼容Office2007/2010,可以很好的移植和使用原来Office程序的代码,今天我用 word转pdf 为例讲述怎么用C#操作WPS ...

      网上已有很多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 问题

    2014-07-22 16:28:30
    在初始化WPS.ApplicationClass的时候 报 检索 COM 类工厂中 CLSID 为 {000209FF-0000-4B30-A977-D214852036FE} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_...
  • c#操作wps中的excel

    千次阅读 2014-08-18 09:55:20
    c#中可以操作office的excel,这个

    在c#中可以操作office的excel,这个是比较简单,直接引入类库操作。操作wps中的excel比其比较麻烦。

    第一步:首先将wps的相关COM组件添加至引用. 工程->添加引用->COM->Kingsoft ET 2.0 Object Library / Upgrade Kinsoft ET 3.0 Object Library

    第二步:Using KSO;Using ET;(导入Kingsoft ET 2.0 Object Library时引用)

                  Using EXCEL;(导入Upgrade Kinsoft ET 3.0 Object Library时引用)

    第三步:将数据存储在c#内存中定义的数据表中。

     static void Dataprocessing(String tagid,String actionid)
            {
                System.Data.DataTable dt = new System.Data.DataTable();  //定义数据表变量
                //数据库中执行查询的SQL语句
                string sql = string.Format("SELECT * from RSSIData where ActionId='"+actionid+"'");
                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }
                SqlCommand cmd = new SqlCommand(sql, connection);
                SqlDataReader reader = cmd.ExecuteReader();
                //生成表格的每列的标题(以我的程序为例)
                for (int i = 0; i < 7; i++)
                {
                    if (i == 0){dt.Columns.Add("读写器ID", typeof(string)); }
                    else if(i==1) { dt.Columns.Add("标签ID", typeof(string)); }
                    else if (i == 2) { dt.Columns.Add("标签负载", typeof(string)); }
                    else if (i == 3) { dt.Columns.Add("A通道RSSI值", typeof(string)); }
                    else if (i == 4) { dt.Columns.Add("B通道RSSI值", typeof(string)); }
                    else if (i == 5) { dt.Columns.Add("测试时间", typeof(string)); }
                    else if (i == 6) { dt.Columns.Add("数据标识ID", typeof(string)); }
                }
                //根据数据库查询的结果,一一将数据填写在对应的dt行中
                while(reader.Read())
                {
                  DataRow dr = dt.NewRow();
                  for (int j = 0; j <7; j++)//for循环一次,生成一行数据
                  {
                      if (j == 0){ dr[j] = reader["ReaderId"]; }
                      else if(j==1){ dr[j] = reader["TagId"];}
                      else if (j == 2) { dr[j] = reader["Payload"]; }
                      else if (j == 3) { dr[j] = reader["RSSI"]; }
                      else if (j == 4) { dr[j] = reader["RSSIB"]; }
                      else if (j == 5) { dr[j] = reader["CollectTime"]; }
                      else if (j == 6) { dr[j] = reader["ActionId"]; }
                  }
                  dt.Rows.Add(dr); 
                }
                string s = OutputWPSExcel(dt, "第二组小方格测试的四个标签数据报表", "C:\\users\\acer\\Desktop\\导师的\\定位数据统计\\");
                 Console.Write(s); 
            }
    

    第四步:将dt中的数据存储在wps的excel中
    /// 
            /// 将DataTable的数据导出显示为报表(使用WPS)
            /// 
            /// 要导出的数据
            /// 导出报表的标题
            /// 保存文件的路径
            /// 
            static string OutputWPSExcel(System.Data.DataTable dt, string strTitle, string FilePath)
            {
                DateTime beforeTime = DateTime.Now;
                object missing = Type.Missing;
                Excel.Range objRange = null;
                string filename = "";
                try
                {
                    objApp = new Excel.Application();
    
                    objWorkBook = objApp.Workbooks.Add(Type.Missing);
                    objWorkSheet = objWorkBook.ActiveSheet;
                    int rowIndex = 4;
                    int colIndex = 1;
                    //取得列标题	
                    foreach (DataColumn col in dt.Columns)
                    {
                        colIndex++;
                        excel.Cells[4, colIndex]
                        objWorkSheet.Cells[4,colIndex] =  col.ColumnName;
                        //设置标题格式为居中对齐
    
                        Range range = objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(4, colIndex),(object) objWorkSheet.Cells.get_Item(4, colIndex));
                        range.Font.Bold = true;
                        range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        range.Select();
                    }
                     //取得表格中的数据	
                    foreach (DataRow row in dt.Rows)
                    {
                        rowIndex++;
                        colIndex = 1;
                        foreach (DataColumn col in dt.Columns)
                        {
                            colIndex++;
                            if (col.DataType == System.Type.GetType("System.DateTime"))
                            {
                                objWorkSheet.Cells[rowIndex, colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
                                objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(rowIndex, colIndex));//设置日期型的字段格式为居中对齐
                            }
                            else
                                if (col.DataType == System.Type.GetType("System.String"))
                                {
                                    Range txtRange = (Range)objWorkSheet.Cells[rowIndex, colIndex];
                                    txtRange.NumberFormatLocal = "@";
                                    objWorkSheet.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(rowIndex, colIndex),(object) objWorkSheet.Cells.get_Item(rowIndex, colIndex)).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//设置字符型的字段格式为居中对齐
                                }
                                else
                                {
                                    objWorkSheet.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                                }
                        }
                    }
                    //加载一个合计行	
                    int rowSum = rowIndex + 1;
                    int colSum = 2;
                    objWorkSheet.Cells[rowSum, 2] = "合计";
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(rowSum, 2), (object)objWorkSheet.Cells.get_Item(rowSum, 2)).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    //取得整个报表的标题	
                    objWorkSheet.Cells[2, 2] = strTitle;
                    //设置整个报表的标题格式	
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(2, 2), (object)objWorkSheet.Cells.get_Item(2, 2)).Font.Bold = true;
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(2, 2), (object)objWorkSheet.Cells.get_Item(2, 2)).Font.Size = 22;
    
                    //设置报表表格为最适应宽度	
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(4, 2), (object)objWorkSheet.Cells.get_Item(rowSum, colIndex)).Select();
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(4, 2), (object)objWorkSheet.Cells.get_Item(rowSum, colIndex)).Columns.AutoFit();
    
                    //设置整个报表的标题为跨列居中	
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(2, 2), (object)objWorkSheet.Cells.get_Item(2, colIndex)).Select();
                    objWorkSheet.get_Range((object)objWorkSheet.Cells.get_Item(2, 2), (object)objWorkSheet.Cells.get_Item(2, colIndex)).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
    
                    DateTime afterTime = DateTime.Now;
                    filename =FilePath+ strTitle + "_" + DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
                    //保存文件
                    objWorkBook.SaveAs(filename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing);
                    objWorkBook.Close(missing, missing, missing);
                }
                finally
                {
                    ReleaseComObject(objRange);
                    ReleaseComObject(objWorkSheet);
                    ReleaseComObject(objWorkBook);
                }
                return filename;
            }
            static void ReleaseComObject(object obj)
            {
                if (obj != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
            }
    


    展开全文
  • c#操作WPS_Excel 添加外部引用文件

    千次阅读 2018-09-21 10:21:15
    开发环境:Windows7 64位+Word2007 +WPS Office 专业增强版+Visual Studio 2013 软件安装:安装Microsoft Office 2007 后再安装WPS2016 。 直接添加安装目录下的DLL引用 添加下面的引用后可以使用using WPS;...

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

    软件安装:安装Microsoft Office 2007 后再安装WPS2016 。

    直接添加安装目录下的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
        }
    }

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

    展开全文
  • 为了兼容性,需要这么干,把office的PIA-->> Microsoft.Office.Interop.Word添加引用 把wps 的V9版PIA--->>Kingsoft.Office.Interop.Wpsapi添加引用,接下来在代码中直接用wps的方法创建word 并执行所有操作。...

    http://blog.csdn.net/yanpengliumin/article/details/50344799

             最近一直在做的开发是关于导出word的功能,一开始的做法是在VS中直接添加引用office PIA,Microsoft.Office.Interop.Word,VS08有两个版本,V11和V12,V11对应的是office03,V12对应的office07,试验之后得出结论,这两个PIA的引用只会影响开发机器的使用,就是说要与开发机器的office版本相对应。在目标机器上都是可以使用的,没有问题。
                接下来说一下关于PIA的事情,Primary Interop Assembly,中文解释为:主互程序操作集。通过查阅MSDN 可以了解到,VS在调用COM和COM+组件时会通过解析自动生成 Interop Assembly,即程序操作集,成为IA,这个IA包含我们代码中可以调用的COM的接口,属性一类的东西,可以这样理解,IA就是你的程序和COM组件之间的一个桥接。而PIA是.NET官方生成的IA,这个是开发者根据常用的COM组件生成的专门用于.NET运行环境的IA,具有更高的可靠性。到这一步,经过验证,任何word的操作只需引用.net环境的下
    Microsoft.Office.Interop.Word组件,操作EXCEL需要引用.net环境下的Microsoft.Office.Interop.Excel组件。
            关于word的实际操作代码可以查阅相应的API,在后面我会给出我的代码,主要涉及到操作页眉,设置字体,设置间距,插入表格等操作。
           问题来了,销售人员反应有的客户不使用office,只使用WPS。我差点就问WPS是个什么鬼。还是自己查查资料看看中国人写的办公软件吧。WPS发展到目前最新版本为WPS2016。版本就有点多了  02、03 、05、07、10、 13 等等。作为程序员我只关心你的二次开发用的是什么,经过测试,WPS10之前的版本需要自己生成.net支持的IA,WPS2013有两个版本,个人版和企业版,个人版中没有提供PIA,企业版中提供了WPSOFFICEPIA.EXE生成工具,安装之后,就会生成.net环境下可以用的PIA。不知道什么原因,我的VS2008没有在“引用”中没有看到生成的PIA,个人猜测由于我的VS2008是破解版,所以看不到,没什么关系,可以自己找到,在“运行”中输入“C:\windows\assembly\gac-32”回车之后就可以进入一个文件目录,这个目录中就是所有的PIA程序,找到Kingsoft开头的目录,有8个,分别提供了word、excel 、ppt 等操作,每个类型各有两个版本,分别是V8和V9,通过分别引用之后,可以看出 V8是支持老版本WPS的API。例如可以用et.Application创建ET表格,用WPS.Application创建wps文档。V9版本就比较高级了。提供了对于office相同的操作dll。可以直接使用word.application创建word文档或者wps文档。网上有人说V9版本提供了Kwps.Application创建wps文档,我努力一番,也没有找到这种方法,不过目前来说只要V9兼容office对我来说就足够了。
        接下来就是解决wps和office兼容的问题了,目标机器上有三种情况,一是安装了WPS,二是安装了office ,三是同时安装了office和wps。估计第三种也就是我这个开发人员会这么干!!为了兼容性,需要这么干,把office的PIA-->> Microsoft.Office.Interop.Word添加引用 把wps 的V9版PIA--->>Kingsoft.Office.Interop.Wpsapi添加引用,接下来在代码中直接用wps的方法创建word 并执行所有操作。OK !在这种情况下,当目标机器只安装了offcie时,由于V9版本的兼容性会直接生成word。为了可以兼容word03.我在代码中也做了一些其他的操作,可以参考。
        上代码 !!!
     
    [csharp] view plain copy
     
    1. private void ExportToWps()  
    2.       {  
    3.           try  
    4.           {  
    5.               string strFileName = label14.Text + "-" + label15.Text;  
    6.               string saveFileName = "";  
    7.               SaveFileDialog saveDialog = new SaveFileDialog();  
    8.               saveDialog.DefaultExt = "doc";  
    9.               saveDialog.Filter = "Word文件|*.doc";  
    10.               saveDialog.FileName = strFileName;  
    11.               saveDialog.ShowDialog();  
    12.               saveFileName = saveDialog.FileName;  
    13.               if (saveFileName.IndexOf(":") < 0) return; //被点了取消   
    14.                
    15.           //   Word.ApplicationClass oWordApp = new Word.ApplicationClass();//建立Word   对象,启动word程序    
    16.              Word.Application oWordApp = new Word.Application();  
    17.                
    18.               if (oWordApp == null)  
    19.               {  
    20.                   MessageBox.Show("word版本错误!", "error");  
    21.                   return;  
    22.               }  
    23.               object missing = System.Reflection.Missing.Value;  
    24.               object oTemplate = System.Windows.Forms.Application.StartupPath + "\\Normal.dot";  
    25.   
    26.             Word.Document oWordDoc = oWordApp.Documents.Add(ref oTemplate, ref missing, ref missing, ref missing);//新建word文档     
    27.   
    28.               oWordApp.Visible = false;//设置Word程序可见,如果为false   那么word不可见     
    29.               //页面设置     
    30.               oWordDoc.PageSetup.TopMargin = oWordApp.CentimetersToPoints(2.5f);       //上     
    31.               oWordDoc.PageSetup.BottomMargin = oWordApp.CentimetersToPoints(2f);//下     
    32.               oWordDoc.PageSetup.LeftMargin = oWordApp.CentimetersToPoints(2.2f);//左     
    33.               oWordDoc.PageSetup.RightMargin = oWordApp.CentimetersToPoints(2.2f);//右     
    34.               添加页眉   林总不需要  
    35.               //oWordDoc.ActiveWindow.ActivePane.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageHeader;   //激活页眉的编辑     
    36.               //oWordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;   //设置对齐方式     
    37.               //string headtext1 =PcaSettings.GetSettingString (101);  
    38.               //oWordApp.Selection.Font.Name = "宋体";   //设置字体     
    39.               //oWordApp.Selection.Font.Size = 10.5f;  
    40.               //oWordApp.Selection.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic;  
    41.               //oWordApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;   //bu添加下划线     
    42.               //oWordApp.Selection.TypeText(headtext1);  
    43.               //oWordApp.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;  
    44.               //添加页脚     
    45.               string foottext1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");  
    46.               oWordDoc.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageFooter;   //激活页脚的编辑     
    47.               oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;  
    48.               oWordApp.Selection.Font.Name = "仿宋_GB2312";  
    49.               oWordApp.Selection.Font.Size = 8;  
    50.               oWordApp.Selection.TypeText(foottext1);  
    51.               //添加正文     
    52.               oWordDoc.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument;//激活页面内容的编辑     
    53.               oWordApp.Selection.Font.Name = "黑体";//标题使用黑体  
    54.               oWordApp.Selection.Font.Scaling = 100;//视图里面的比例控制  
    55.               //oWordApp.Selection.ParagraphFormat.LineSpacingRule = Microsoft.Office.Interop.Word.WdLineSpacing.wdLineSpaceSingle;  
    56.               oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;  
    57.               oWordApp.Selection.Font.Size = 16;  
    58.               oWordApp.Selection.Font.Bold = 1;  
    59.               oWordApp.Selection.TypeText(label14.Text);//主标题  
    60.               oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;  
    61.               oWordApp.Selection.TypeParagraph();//另起一段    
    62.               oWordApp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;  
    63.               oWordApp.Selection.TypeText(label15.Text);//副标题  
    64.               oWordApp.Selection.Font.Name = "宋体";  
    65.               oWordApp.Selection.TypeParagraph();//另起一段    
    66.               //oWordApp.Selection.TypeParagraph();//另起一段     
    67.               oWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;  
    68.               oWordApp.Selection.Font.Size = 11;  
    69.               oWordApp.Selection.Font.Bold = 0;  
    70.               #region 项不加粗  
    71.               //oWordApp.Selection.TypeText(layoutControlItem3.Text + label6.Text); oWordApp.Selection.TypeText(",    ");  
    72.               //oWordApp.Selection.TypeText(layoutControlItem4.Text + label1.Text);  
    73.               //oWordApp.Selection.TypeParagraph();//另起一段   
    74.               //oWordApp.Selection.TypeText(layoutControlItem5.Text + label2.Text); oWordApp.Selection.TypeText(",    ");  
    75.               //oWordApp.Selection.TypeText(layoutControlItem6.Text + label3.Text);  
    76.               //oWordApp.Selection.TypeParagraph();//另起一段   
    77.               //oWordApp.Selection.TypeText(layoutControlItem7.Text + label4.Text); oWordApp.Selection.TypeText(",    ");  
    78.               //oWordApp.Selection.TypeText(layoutControlItem8.Text + label5.Text);  
    79.               //oWordApp.Selection.TypeParagraph();//另起一段   
    80.               //oWordApp.Selection.TypeText(layoutControlItem10.Text);  
    81.               oWordApp.Selection.TypeParagraph();//另起一段   
    82.               //oWordApp.Selection.TypeText(label10.Text);  
    83.               //SectDoc doc = GetDocument() as SectDoc;  
    84.               //if (doc.FileCount > 1)  
    85.               //{  
    86.               //    switch (doc.FileCount)  
    87.               //    {  
    88.               //        case 2:  
    89.               //            {  
    90.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    91.               //                oWordApp.Selection.TypeText(layoutControlItem12.Text);  
    92.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    93.               //                oWordApp.Selection.TypeText(label17.Text);  
    94.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    95.               //                oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);  
    96.   
    97.               //                if (label12.Visible)  
    98.               //                {  
    99.               //                    oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text);  
    100.               //                }  
    101.               //                if (label13.Visible)  
    102.               //                {  
    103.               //                    oWordApp.Selection.TypeText(layoutControlItem18.Text+label13.Text);  
    104.               //                }  
    105.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    106.               //                oWordApp.Selection.TypeText(label8.Text+";");  
    107.               //                oWordApp.Selection.TypeText(label9.Text);  
    108.               //                //oWordApp.Selection.TypeParagraph();//另起一段   
    109.               //                break;  
    110.               //            }  
    111.               //        case 3:  
    112.               //            {  
    113.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    114.               //                oWordApp.Selection.TypeText(layoutControlItem12.Text);  
    115.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    116.               //                oWordApp.Selection.TypeText(label17.Text);  
    117.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    118.               //                oWordApp.Selection.TypeText(layoutControlItem14.Text);  
    119.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    120.               //                oWordApp.Selection.TypeText(label19.Text);  
    121.               //                oWordApp.Selection.TypeParagraph();//另起一段   
    122.               //                oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);  
    123.               //                //oWordApp.Selection.TypeParagraph();//另起一段  
    124.               //                break;  
    125.               //            }  
    126.               //        default:  
    127.               //            break;  
    128.               //    }  
    129.               //}  
    130.               //else  
    131.               //{  
    132.               //    oWordApp.Selection.TypeParagraph();//另起一段   
    133.               //    oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text); oWordApp.Selection.TypeText(", ");  
    134.               //    oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text); oWordApp.Selection.TypeText(", ");  
    135.               //    oWordApp.Selection.TypeText(layoutControlItem18.Text + label13.Text); oWordApp.Selection.TypeText(", ");  
    136.               //    oWordApp.Selection.TypeParagraph();//另起一段  
    137.               //}  
    138.               #endregion  
    139.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem3.Text);//加粗标题  
    140.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label6.Text);//不加粗的值  
    141.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    142.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem4.Text);//加粗标题  
    143.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label1.Text);//不加粗的值  
    144.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    145.               oWordApp.Selection.TypeParagraph();//另起一段   
    146.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem5.Text);//加粗标题  
    147.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label2.Text);//不加粗的值  
    148.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    149.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem6.Text);//加粗标题  
    150.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label3.Text);//不加粗的值  
    151.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    152.               oWordApp.Selection.TypeParagraph();//另起一段   
    153.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem7.Text);//加粗标题  
    154.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label4.Text);//不加粗的值  
    155.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    156.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem8.Text);//加粗标题  
    157.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label5.Text);//不加粗的值  
    158.               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    159.               oWordApp.Selection.TypeParagraph();//另起一段   
    160.               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem10.Text);//加粗标题  
    161.               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label10.Text);//不加粗的值  
    162.               SectDoc doc = GetDocument() as SectDoc;  
    163.               if (doc.FileCount > 1)  
    164.               {  
    165.                   switch (doc.FileCount)  
    166.                   {  
    167.                       case 2:  
    168.                           {  
    169.                               oWordApp.Selection.TypeParagraph();//另起一段   
    170.                               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem12.Text);//加粗标题  
    171.                               //oWordApp.Selection.TypeParagraph();//另起一段   
    172.                               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label17.Text);//不加粗的值  
    173.                               oWordApp.Selection.TypeParagraph();//另起一段   
    174.                               oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem15.Text);//加粗标题  
    175.                               oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label11.Text);//不加粗的值  
    176.                               oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    177.                               if (label12.Visible)  
    178.                               {  
    179.                                   oWordApp.Selection.TypeText(layoutControlItem16.Text + label12.Text);  
    180.                               }  
    181.                               if (label13.Visible)  
    182.                               {  
    183.                                   oWordApp.Selection.TypeText(layoutControlItem18.Text + label13.Text);  
    184.                               }  
    185.                               //oWordApp.Selection.TypeParagraph();//另起一段   
    186.                               break;  
    187.                           }  
    188.                       case 3:  
    189.                           {  
    190.                               oWordApp.Selection.TypeParagraph();//另起一段   
    191.                               oWordApp.Selection.TypeText(layoutControlItem12.Text);  
    192.                               oWordApp.Selection.TypeParagraph();//另起一段   
    193.                               oWordApp.Selection.TypeText(label17.Text);  
    194.                               oWordApp.Selection.TypeParagraph();//另起一段   
    195.                               oWordApp.Selection.TypeText(layoutControlItem14.Text);  
    196.                               oWordApp.Selection.TypeParagraph();//另起一段   
    197.                               oWordApp.Selection.TypeText(label19.Text);  
    198.                               oWordApp.Selection.TypeParagraph();//另起一段   
    199.                               oWordApp.Selection.TypeText(layoutControlItem15.Text + label11.Text);  
    200.                               //oWordApp.Selection.TypeParagraph();//另起一段  
    201.                               break;  
    202.                           }  
    203.                       default:  
    204.                           break;  
    205.                   }  
    206.               }  
    207.               else  
    208.               {  
    209.                   oWordApp.Selection.TypeParagraph();//另起一段   
    210.                   oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem15.Text);//加粗标题  
    211.                   oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label11.Text);//不加粗的值  
    212.                   oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    213.                   oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem16.Text);//加粗标题  
    214.                   oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label12.Text);//不加粗的值  
    215.                   oWordApp.Selection.TypeText(",    ");//各项之间间隔  
    216.                   oWordApp.Selection.Font.Bold = 1; oWordApp.Selection.TypeText(layoutControlItem18.Text);//加粗标题  
    217.                   oWordApp.Selection.Font.Bold = 0; oWordApp.Selection.TypeText(label13.Text);//不加粗的值  
    218.                   //oWordApp.Selection.TypeParagraph();//另起一段   
    219.               }  
    220.               oWordApp.Selection.Font.Size = 11.5f;  
    221.               //表插入行  
    222.               object start = oWordApp.Selection.Start;//在内容的最后插入表格  
    223.               object end = oWordApp.Selection.End; ;  
    224.               Word.Range tableLocation = oWordDoc.Range(ref start, ref end);  
    225.               oWordDoc.Tables.Add(tableLocation, dataGridView1.RowCount + 1, dataGridView1.ColumnCount, ref missing, ref missing);  
    226.               Word.Table newTable = oWordDoc.Tables[1];  
    227.               //设置表格的格式  
    228.               newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;//内实体边框  
    229.               newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;//外实体边框  
    230.               newTable.AllowAutoFit = true;  
    231.               newTable.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent);  
    232.               //写入标题  
    233.               for (int i = 0; i < dataGridView1.ColumnCount; i++)  
    234.               {  
    235.                   newTable.Cell(1, i + 1).Range.Text = dataGridView1.Columns[i].HeaderText;  
    236.               }  
    237.               //写入数值  
    238.               for (int r = 0; r < dataGridView1.Rows.Count; r++)  
    239.               {  
    240.                   for (int i = 0; i < dataGridView1.ColumnCount; i++)  
    241.                   {  
    242.                       //电阻计算                      
    243.                       if (dataGridView1.Rows[r].Cells[i].Value == null)  
    244.                       {  
    245.                           newTable.Cell(r + 2, i + 1).Range.Text = "";  
    246.                       }  
    247.                       else  
    248.                       {  
    249.                           newTable.Cell(r + 2, i + 1).Range.Text = dataGridView1.Rows[r].Cells[i].Value.ToString();  
    250.                       }  
    251.                       if (i == 6)  
    252.                       {  
    253.                           newTable.Cell(r + 2, i + 1).Range.ParagraphFormat.Alignment =Word.WdParagraphAlignment.wdAlignParagraphCenter;  
    254.                       }  
    255.                       else if (i == 7)  
    256.                       {  
    257.   
    258.                       }  
    259.                       else  
    260.                       {  
    261.                           newTable.Cell(r + 2, i + 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;  
    262.                       }  
    263.                   }  
    264.                   System.Windows.Forms.Application.DoEvents();  
    265.               }  
    266.               object wdUnits;  
    267.               wdUnits = Word.WdUnits.wdLine;  
    268.               object nCount = dataGridView1.RowCount + 1+1;  
    269.               oWordApp.Selection.MoveDown(ref wdUnits, ref nCount, ref missing);  
    270.               oWordApp.Selection.Font.Size = 12;  
    271.               oWordApp.Selection.Font.Bold = 1;//防腐层和综合等级项加粗显示  
    272.               oWordApp.Selection.TypeText(label8.Text); oWordApp.Selection.TypeText(", ");  
    273.               oWordApp.Selection.TypeText(label9.Text);  
    274.               string strfilename = saveFileName;  
    275.               object filename = strfilename;  
    276.               //保存文档为word2000格式     
    277.               oWordDoc.SaveAs2000(ref   filename, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing, ref   missing);  
    278.               MessageBox.Show(strFileName + "导出成功", "提示", MessageBoxButtons.OK);  
    279.   
    280.               //以下关闭Word程序     
    281.               object nochanges = Word.WdSaveOptions.wdDoNotSaveChanges;  
    282.               oWordApp.Quit(ref   nochanges, ref   missing, ref   missing);  
    283.           }  
    284.           catch (Exception ex)  
    285.           {  
    286.               MessageBox.Show(ex.Message);  
    287.           }  
    288.       }  

    转载于:https://www.cnblogs.com/zcm123/p/6840963.html

    展开全文
  • C#操作WPS的EXCEL表格

    千次阅读 2011-11-18 16:19:09
    1. 打开ET文件 ET.Application etApp; ET.workbook etbook; ET.Worksheet etsheet; ET.Range etrange; etApp = new ET.Application(); etbook = new ET.workbook();...etbook = (ET.workbook)etApp.Workbook
  • 为了兼容性,需要这么干,把office的PIA-->> Microsoft.Office.Interop.Word添加引用 把wps 的V9版PIA--->>Kingsoft.Office.Interop.Wpsapi添加引用,接下来在代码中直接用wps的方法创建word 并执行所有操作。...
  • 关于C#操作WPS和office兼容性的问题

    万次阅读 2015-12-17 17:39:19
    为了兼容性,需要这么干,把office的PIA-->> Microsoft.Office.Interop.Word添加引用 把wps 的V9版PIA--->>Kingsoft.Office.Interop.Wpsapi添加引用,接下来在代码中直接用wps的方法创建word 并执行所有操作。...
  • 操作wps的库: Interop.ET.dll 即 etapp.dll 代码: private void button1_Click(object sender, EventArgs e) { object missing = Missing.Value; string fileName = "D:\\test.xls"; ET.Application ...
  • C#调用wps用例CSharp_WPSStartKit

    热门讨论 2009-09-04 21:36:11
    C#调用wps用例CSharp_WPSStartKit,c#调用wps操作word实例
  • C# 操作Office和WPS

    千次阅读 2013-12-30 15:48:12
    C# 操作Office和WPS  调用Word对象的方法或者属性时候,必须保证word文档是打开的状态。
  • 主要介绍了C#实现WPS文件转PDF格式的方法,涉及C#针对office组件的相关引用与操作技巧,需要的朋友可以参考下
  • c#开发wps插件

    2017-07-19 13:54:00
    wps 2016版比旧版感觉大气多了,加载速度快,操作方便,一直是wps的优点。随着wps的稳定性提高(当然比office还是差了很多),政府等一些部门采用几乎免费的wps来办公。我们公司决定把业务扩展到wps。于是我开始wps...
  • C#调用WPS操作Excel文件遇到的问题

    千次阅读 2017-08-09 20:29:25
     简单整理如下:C#调用ET,在项目右键中“添加引用”,选择"COM"里的“Kingsoft ET 2.0 object library” 对应文件: etapiv8.dll,选择“生成”操作,然后将\obj\Debug目录(也可能是会是\Release)下的Interop.KSO....
  • 使用C#WPS的excel

    千次阅读 2014-01-19 13:23:52
    使用C#WPS的excel转自网络 最近因为工作需要,用C#WPS重写excel表的某写数据。因为完全没接触过这方面的内容,所以写起来比较费劲非常简单的一个功能,折腾了多半天。 现在将小白操作记录下来。以备以后查看。...
  • C#使用wps转pdf

    2019-11-15 09:09:09
    在word文件生成的过程中,需要将文档转换成pdf格式,一来是为了保护文档中的内容,二来能够使文档在各个平台看到的是一样的,word文档有时在不同版本,不同操作系统,看到的文档格式是不同的,为了省的生成的文件,...
  • c#开发wps插件(2)

    2017-07-19 15:38:00
    工欲善其事必先利其器,首先安装wps 2016专业版,然后再开发。 第一步:打开vs2010,新建一个类库项目,项目结构如下: 说明:其中Resource1.resx是资源文件,它包括了两张png图片一个定义ribbon的txt文件。 ...
  • 笔者也是最近开始学习用C#开发WPS,这里的开发不是针对插件,而是用代码操作WPS。下面跟随我一起开始进行开发吧。  一、开发环境  1、开发的集成环境。本人使用的是VS2015社区版,免费正版不错。当然了,也可以用...
  • c#语言使用wps组件进行文件操作,对word,excel与html和pdf之间的转换,适合初学者参考
  • 使用C#操作Excel(读写包含wps

    千次阅读 2020-05-26 15:17:26
    C#读写Excel的几种方法 1 使用Office自带的库 前提是本机须安装office才能运行,且不同的office版本之间可能会有兼容问题,从Nuget下载Microsoft.Office.Interop.Excel 读写代码如下: 1 using Microsoft....
  • 想要操作wps或office表格需要引入相对应的dll,office好找,wps在扩展中找到kingsoft的一些dll. 其中通过特性描述来获取泛型的中文名. 具体实现代码如下:  using System;using System.Collections.Generic;using ...
  • 想要操作wps或office表格需要引入相对应的dll,office好找,wps在扩展中找到kingsoft的一些dll. 其中通过特性描述来获取泛型的中文名. 具体实现代码如下: using System; using System.Collections.Generic; ...
  • C#操作Excel

    2014-03-12 16:53:00
    /// <summary> /// 写入 数据到 WPS Excel 中 /// </summary> public void WriteToWpsExcel() { // 创建 Excel 对象 ET.Application excel = new WpsE...
  • 微软的EXCEl操作相信大家也知道,不方便,安装包太大,而且表格的数据量也只有6000多(是6000多还是60000多我就忘记了),在导出导入大量数据的就没办法,而wsp表格则实现了百万数据的容量,而且安装包也小,操作更...
  • c# 操作office 若干问题

    2021-02-16 21:13:51
    1、电脑必须安装office 我安装了offic2013 并且...3、如果使用过程中报错,卸载原有的wps, 看看好用不,如果还不好用记住下载最新的wps 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM ...
  • c#目录操作

    2018-08-06 11:25:50
    1.读取指定目录下所有文件 我任选一个系统中的文件目录 static void Main(string[] args) { //使用Directory静态类中的GetFiles方法 string[] fileName = Directory.GetFiles...D:\wps\WPS Office"); ...
  • 装完wps卸载后,C#调用office无法正常打印,报错:无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

c#操作wps

c# 订阅