想用OLE操作WPS的ET请进来...

firefly3233 2012-02-03 08:03:49
通过我的努力,我会用OLE操作WPS的ET了,现将经验与大家分享一下:

WPS Office中的许多东西其实都是在模仿Microsoft Office,当然电子表格也不例外,微软件叫EXCEL,他就叫ET(Electric Table).程序名叫et.exe,OLE类库名叫etapp.dll.

如果安装了WPS OFFICE,这个文件一般在:
C:\Program Files\Kingsoft\WPS Office 2009\office6下,
和EXCEL9.OLB导入的方法一样.

如果想和EXCEL9.OLB共存使用,要防止命名冲突(因为好多类名和函数名是一样的)
可以将命名空间一下:
如:将excel9.h中的所有内容(即类定义)
放到
namespace EXCEL
{
....
}
里.
excel9.cpp中的内容(即函数体),如法泡制.

或将etapp.h中的所有内容
放到
namespace ETAPP
{
....
}

etapp.cpp中的内容(即函数体),如法泡制.

定义时,只不过多加个命名空间而已,如:
ETAPP::_Application appEt;
appEt.CreateDispatch("ET.Application");
//显示et
appEt.SetVisible(TRUE);
appEt.SetUserControl(TRUE);

ETAPP::Workbooks books;
ETAPP::_Workbook book;
ETAPP::Worksheets sheets;
ETAPP::_Worksheet sheet;
ETAPP::Range range;
ETAPP::Font font;
ETAPP::Borders borders;
ETAPP::PageSetup pageset;

EXCEL的ProgID是:Excel.Application
ETP的ProgID是:ET.Application

我发现两者的用法大同小异,甚至常量都大部分相似.
如ETAPP的Range::SetValue只不过比excel的多一个类型参数

#define etRangeValueDefault 10

range.SetValue(etRangeValueDefault, _var_t("序号"));

如:
book = books.Add(vtMissing); // 得到Workbook
sheets = book.GetWorksheets(); // 得到Worksheets
sheet = sheets.GetItem(_var_t((short)1)); // 得到Worksheet
pageset = sheet.GetPageSetup();
pageset.SetPrintTitleRows("$1:$1");//设置打印列头,EXCEL的参数要变体,加个强制转换就得
pageset.SetOrientation(xlLandscape);//横向打印
pageset.SetCenterHorizontally(TRUE);//水平居中
pageset.SetCenterVertically(TRUE);//垂直居中

基本上是大多小异,以上在VC6.0上测试成功,EXCEL和ET均可以操作.
...全文
2044 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqazxsw110 2013-04-24
  • 打赏
  • 举报
回复
C# 怎么操作wps插入行 求助
gaoxunlong 2013-02-06
  • 打赏
  • 举报
回复
愁呢,不知道该怎么用workbook
liuxuj 2012-02-06
  • 打赏
  • 举报
回复
顶。呵呵
firefly3233 2012-02-05
  • 打赏
  • 举报
回复
分享经验的,都没人进来,无法结帖.
有人进来,立即结帖给分..

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧