资源简介
本例程提供基于WPS表格进行读写操作的类,并VC6.0下编译通过,更新至V1.2

代码片段和文件信息
// ControlWPS.cpp: implementation of the CControlWPS class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “ControlWPS.h“
#include
#pragma comment(lib“comsupp.lib“)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CControlWPS::CControlWPS() :
m_pIDisp(NULL)
{
CoInitialize(NULL);
::VariantInit(&varWorkbook);
::VariantInit(&varSheets);
::VariantInit(&varActiveSheet);
}
CControlWPS::~CControlWPS()
{
CloseWPS();
CoUninitialize();
}
// 启动WPS表格
BOOL CControlWPS::OpenWPS(CString File)
{
USES_CONVERSION;
CLSID clsid = {0};
// 获取WPS表格的 CLSID
HRESULT hr = CLSIDFromProgID(L“ET.Application“ &clsid);
if(FAILED(hr)) return FALSE;
// 通过CLSID启动WPS
hr = CoCreateInstance(clsid NULL CLSCTX_LOCAL_SERVER IID_IDispatch (void**)&m_pIDisp);
if(FAILED(hr)) return FALSE;
// 使WPS可见
// VARIANT var = {0};
// var.vt = VT_BOOL;
// var.boolVal = VARIANT_TRUE;
// PutProperty(m_pIDisp L“Visible“ &var);
// 获取Workbooks集合
VARIANT varWorkbooks = {0};
hr = GetProperty(m_pIDisp L“Workbooks“ &varWorkbooks);
if(FAILED(hr)) return FALSE;
// 获取工作表
CComVariant varDocument[4];
varDocument[1].vt = VT_BOOL;
varDocument[1].boolVal = VARIANT_FALSE;
varDocument[3].vt = VT_BSTR;
varDocument[3].bstrVal = File.AllocSysString();
hr = InvokeN(varWorkbooks.pdispVal L“Open“ varDocument 4 &varWorkbook);
::SysFreeString(varDocument[3].bstrVal);
if(FAILED(hr)) return FALSE;
// 获取Sheets集合
hr = GetProperty(m_pIDisp L“Sheets“ &varSheets);
if(FAILED(hr)) return FALSE;
// 获取Count集合
VARIANT varCount = {0};
hr = GetProperty(varSheets.pdispVal L“Count“ &varCount);
if(FAILED(hr)) return FALSE;
for (long i=1;i<=varCount.lVal;i++)
{
// 获取Worksheet对象
VARIANT varWorksheet = {0};
CComVariant varItem[1];
varItem[0].vt = VT_I4;
varItem[0].lVal = i;
hr = GetPropertyN(varSheets.pdispVal L“Item“ varItem1&varWorksheet);
if(FAILED(hr)) return FALSE;
// 获取Name对象
VARIANT varName = {0};
hr = GetProperty(varWorksheet.pdispVal L“Name“ &varName);
if(FAILED(hr)) return FALSE;
char* lpszText = _com_util::ConvertBSTRToString(varName.bstrVal);
CString SheetName;
SheetName.Format(“%s“lpszText);
m_SheetNames.Add(SheetName);
delete lpszText;
}
return TRUE;
}
BOOL CControlWPS::OpenSheet(CString Sheet)
{
if(varSheets.vt == 0) return FALSE;
for (long i = 0; i < m_SheetNames.GetSize(); i++)
{
if (m_SheetNames.GetAt(i) == Sheet){
// 获取Worksheet对象
CComVariant varItem[1];
varItem[0].vt = VT_I4;
varItem[0].lVal = i+1;
HRESULT hr = GetPropertyN(varSheets.pdispVal L“Item“ varItem1&varActiveSheet);
if(FAILED(hr)) return FALSE;
hr = Invoke0(varActiveSheet.pdispVal L“Select“ NULL);
if(FAILED(hr)) return FALSE
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9604 2008-12-17 15:47 ExcelAccessSrc\ControlWPS.cpp
文件 1395 2008-12-17 16:05 ExcelAccessSrc\ControlWPS.h
文件 36084 2008-12-17 15:54 ExcelAccessSrc\ExcelAccessSrc.aps
文件 1461 2008-12-17 16:05 ExcelAccessSrc\ExcelAccessSrc.clw
文件 1969 2008-11-24 13:40 ExcelAccessSrc\ExcelAccessSrc.cpp
文件 4331 2008-11-24 13:41 ExcelAccessSrc\ExcelAccessSrc.dsp
文件 553 2008-11-24 13:40 ExcelAccessSrc\ExcelAccessSrc.dsw
文件 1412 2008-11-24 13:40 ExcelAccessSrc\ExcelAccessSrc.h
文件 58368 2008-12-17 16:05 ExcelAccessSrc\ExcelAccessSrc.ncb
文件 53760 2008-12-17 16:05 ExcelAccessSrc\ExcelAccessSrc.opt
文件 2078 2008-12-17 16:05 ExcelAccessSrc\ExcelAccessSrc.plg
文件 40 2008-12-17 16:05 ExcelAccessSrc\ExcelAccessSrc.positions
文件 5858 2008-12-17 15:54 ExcelAccessSrc\ExcelAccessSrc.rc
文件 6524 2008-12-17 16:04 ExcelAccessSrc\ExcelAccessSrcDlg.cpp
文件 1546 2008-11-24 15:31 ExcelAccessSrc\ExcelAccessSrcDlg.h
文件 3723 2008-11-24 13:40 ExcelAccessSrc\ReadMe.txt
文件 1078 2008-11-24 13:40 ExcelAccessSrc\res\ExcelAccessSrc.ico
文件 406 2008-11-24 13:40 ExcelAccessSrc\res\ExcelAccessSrc.rc2
文件 830 2008-12-17 15:50 ExcelAccessSrc\resource.h
文件 216 2008-11-24 13:40 ExcelAccessSrc\StdAfx.cpp
文件 999 2008-11-24 13:40 ExcelAccessSrc\StdAfx.h
目录 0 2008-12-17 16:05 ExcelAccessSrc\Debug
目录 0 2008-11-24 13:40 ExcelAccessSrc\res
目录 0 2008-12-17 16:05 ExcelAccessSrc
----------- --------- ---------- ----- ----
192235 24
- 上一篇:TCP、UDP端口及ICMP网络扫描工具
- 下一篇:NetCDF C++接口使用说明
相关资源
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- 基于STM32F103ZET6控制舵机旋转(ts90a/
- 漂亮的仪表盘(widget.cpp)
- C++17 In Detail
- 使用wxWidgets进行跨平台程序开发
- 人脸识别(opencv_facedetect_v4l2)
- stm32f103zet6控制蓝牙小车
- windows hook 框架(detours )
- 自动GetShell
- socket客户端.c
- socket服务端.c
- libnet发送udp和tcp包
- socket tcp应用
- VC++基于OpenGL模拟的一个3维空间模型
- 基于VC++的SolidWorks二次开发SolidWorks
- 俄罗斯方块游戏源码(Tetris)
- 派克变换VC++源码(附文档)
- VC++ 串口
- socket通讯c++源码(客户端+服务端)
- VC++ 大富翁4_大富翁游戏源码
- MFC的异步网络通讯应用程序
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
评论
共有 条评论