想用OLE操作WPS的ET请进来...
通过我的努力,我会用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均可以操作.