01、C#开发WPS(金山办公软件)——初体验

1 篇文章 0 订阅

    目前(2015),新版本的WPS的开发文档已经使用V9版本。笔者也是最近开始学习用C#开发WPS,这里的开发不是针对插件,而是用代码操作WPS。下面跟随我一起开始进行开发吧。

    一、开发环境

    1、开发的集成环境。本人使用的是VS2015社区版,免费正版不错。当然了,也可以用VS的其他版本,包括2008-2013这些版本都可以。

    2、WPS开发环境和开发文档。开发文档V9版本在WPS社区的相应版面上能够下载到,包含了WPS、ET、WPP的开发文档。另有V8的开发文档,两个版本的用法不同。开发环境,在使用WPS专业版的时候,默认帮我们安装好了相关的程序集和dll文件。如果使用个人版,则需要在安装WPS后,使用独立的安装软件(在社区中也能下载到)安装程序集。

    二、开始开发

    在建立了C#工程后,请引用WPS安装目录中OFFICE6目录中的相关api的DLL,如开发ET,则通过引用中浏览选中etapi.dll。WPS开发的命名空间以及相关函数名跟微软的OFFICE基本一致。例如ET,则命名空间为Excel。建立一个新的ET(或Excel)表格的基本过程如下:

Excel.Application app = new Excel.Application();  //建立一个ET的的程序(默认为隐藏,可以用app.Visible = true;使其可见)
Excel.Workbook book = app.Workbooks.Add();        //新建一个工作簿
Excel.Worksheet sheet = book.Worksheets[2];       //引用新建的工作簿的第2个表单
sheet.Cells[1, 1] = "Hello world!";               //在该表单的第1行第1列(即A1单元格)中写入文本Hello world!
book.SaveAs(@"D:\demo.et");                       //保存工作簿到文件demo.et
app.Quit();                                       //退出ET

    以上就建立了demo.et的表格,其中在第2张表单(book.Worksheets[2])的A1单元格中写入了文本Hello world!。其中app.Workboos为Excel.Workbooks对象,系Excel.Workbook对象的集合,同理Excel.Worksheets系表单Excel.Worksheet的集合。由于新建立的ET程序没有工作簿,因此可以通过Add新建或者Open打开现有工作簿的方式引用一个Excel.Workbook对象。当没有新建或打开时,在app.Workbooks系空集合。表单主要由范围Excel.Range组成,上述Cells系表单的一个属性,其类型即为Excel.Range。在ET中,有很多属性其类型都是Excel.Range。要引用其中某些单元格或者单一单元格的方法如下:

    1、引用单一单元格:

    

sheet.Cells[2, 3] = value;
sheet.Range["C2"].Value = value;
sheet.Rows[2].Columns[3].Value = value;
上面value为object类型,也就是说可以用任意类型去赋值,包括string、int、DateTime等等。

上述Cells、Range、Rows、Columns均为Range类型,可以用foreach迭代。上面均系向C2单元格赋值value。其中,Cells属性主要是针对单一的单元格进行操作。

    2、对多个单元格同时操作:

sheet.Range["C3:D6"].Value = "Hello";
sheet.Columns["C:D"].Range["A1:B2"].Value = 122;
sheet.Columns[1].Value = "value";
上面第一行系对当前表单的C3-D6单元格均赋值文本Hello。

第二行系对C1-D2单元格均赋值整数122。注意,作为Range,当在引用行、列继续选择范围(Range)时,其起始开始从当前选择的范围计算,如该行代码中,选择的Range范围为C至D列的所有单元格,因此后面的Range["A1:B2"]中的A(在普通表单中系第一列),但在选择的Range的第一列系C,而B实际对应列D,因此该行代码是最终的范围是C1-D2的所有单元格。

第三行则是对当前表单的第一列均赋值文本value。

注意:在跨行、跨列的多单元格选择中,采用格式字符串形式引用,如上面的"C3:D6",在sheet的Range属性中均是用字符串形式的,而Cells属性则用整数指定行列的方式引用单一单元格。当然了,由于Cells的类型为Range,因此可以以sheet.Cells.Range等方式继续限制选择的范围。

    3、对单元格的读取方式与赋值操作相似,但是对读取另有一个Text属性代替Value,专门用于将相关单元格中的对象呈现为文本予以读取,Text属性系只读。而用Value读取的时候,需要根据实际值的类型予以正确的转换方可。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值