01、C#开发WPS(金山办公软件)——初体验
2015-09-29 09:49
861 查看
目前(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)表格的基本过程如下:
以上就建立了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、引用单一单元格:
上述Cells、Range、Rows、Columns均为Range类型,可以用foreach迭代。上面均系向C2单元格赋值value。其中,Cells属性主要是针对单一的单元格进行操作。
2、对多个单元格同时操作:
第二行系对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读取的时候,需要根据实际值的类型予以正确的转换方可。
一、开发环境
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读取的时候,需要根据实际值的类型予以正确的转换方可。
相关文章推荐
- string.format c#
- C#程序实现动态调用DLL的研究
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏
- c#开发之八---mvc
- c#开发之六---三层技术
- c#开发之五---c#语言基础
- c#开发之四---ado.net
- C#_在VS2010下进行单元测试
- C#des加密算法指定键的大小对于此算法无效
- C# 读自己的资源文件
- c# 构造函数总结:
- C# WebBrowser 控件的使用
- C#异步回调函数
- c# panel背景图片切换闪烁的解决办法
- c# 加密与解密
- C#调用外部exe
- C# 读取EXCEL文件的三种经典方法
- 学习正则表达式及c#应用
- C#的几种压缩文件方法
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)