// ControlWPS.cpp: implementation of the CControlWPS class.
//
//////////////////////////////////////////////////////////////////////
#include "ControlWPS.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CControlWPS::CControlWPS() :
m_pIDisp(NULL)
{
CoInitialize(NULL);
::VariantInit(&varWorkbook);
::VariantInit(&varSheets);
::VariantInit(&varActiveSheet);
}
CControlWPS::~CControlWPS()
{
CloseWPS();
CoUninitialize();
}
BOOL CControlWPS::OpenWPSWord( CString File )
{
CLSID clsid;
// 获取WPS 文档的 CLSID
HRESULT hr = CLSIDFromProgID( L"KWPS.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;
VARIANT varWorkbooks = { 0 };
hr = GetProperty( m_pIDisp, L"Documents", &varWorkbooks );
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;
return TRUE;
}
BOOL CControlWPS::getWPSWordText( CString& strText )
{
HRESULT hr;
VARIANT varRange = { 0 };
hr = GetProperty( varWorkbook.pdispVal, L"Range", &varRange );
if ( FAILED( hr ) ) return FALSE;
VARIANT var = { 0 };
hr = GetProperty( varRange.pdispVal, L"Text", &var );
if ( FAILED( hr ) ) return FALSE;
char* lpszText = _com_util::ConvertBSTRToString( var.bstrVal );
CString cstem( lpszText );
strText = cstem;
delete lpszText;
return TRUE;
}
BOOL CControlWPS::OpenWPSPPT( CString File )
{
CLSID clsid;
// 获取WPS 文档的 CLSID
HRESULT hr = CLSIDFromProgID( L"KWPP.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);
VARIANT varWorkbooks = { 0 };
hr = GetProperty( m_pIDisp, L"Presentations", &varWorkbooks );
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;
}
BOOL CControlWPS::getWPSPPTText( CString& strText )
{
HRESULT hr;
VARIANT varCells = { 0 };
CComVariant varSlides = { 0 };
hr = GetProperty( varWorkbook.pdispVal, L"Slides", &varSlides );
if ( FAILED( hr ) ) return FALSE;
VARIANT varCount = { 0 };
hr = GetProperty( varSlides.pdispVal, L"Count", &varCount );
if ( FAILED( hr ) ) return FALSE;
long count_slides = varCount.lVal;
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( varSlides.pdispVal, L"Item", varItem, 1, &varWorksheet );
if ( FAILED( hr ) ) return FALSE;
VARIANT varShapes = { 0 };
hr = GetProperty( varWorksheet.pdispVal, L"Shapes", &varShapes );
if ( FAILED( hr ) ) return FALSE;
VARIANT varcount_shapes = { 0 };
hr = GetProperty( varShapes.pdispVal, L"Count", &varcount_shapes );
int count_shapes = varcount_shapes.lVal;
//提取每张幻灯片中的shapes,并从shape中获得文本放到result.txt中
for ( int j = 1; j < ( count_shapes + 1 ); j++ )
{
//VARIANT varshape[ 1 ];
CComVariant varshapItem[ 1 ];
varshapItem[ 0 ].vt = VT_I4;
varshapItem[ 0 ].lVal = j;
VARIANT varshape = { 0 };
hr = GetPropertyN( varShapes.pdispVal, L"Item", varshapItem, 1, &varshape );
VARIANT varHasTextFrame = { 0 };
hr = GetProperty( varshape.pdispVal, L"HasTextFrame", &varHasTextFrame );
if ( varHasTextFrame.bVal )
{
VARIANT varTextFrame = { 0 };
hr = GetProperty( varshape.pdispVal, L"TextFrame", &varTextFrame );
VARIANT varTextRange = { 0 };
hr = GetProperty( varTextFrame.pdispVal, L"TextRange", &varTextRange );
VARIANT varText = { 0 };
hr = GetProperty( varTextRange.pdispVal, L"Text", &varText );
char* lpszText = _com_util::ConvertBSTRToString( varText.bstrVal );
CString cstem( lpszText );
strText += cstem;
delete lpszText;
if ( FAILED( hr ) )
return FALSE;
}
}
}
}
// 启动WPS表格
BOOL CControlWPS::OpenWPSExcel(CString File)
{
CLSID clsid ;
// 获取WPS表格的 CLSID
HRESULT hr = CLSIDFromProgID( L"KET.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", varItem,1,&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( lpszText );
m_SheetNames.Add(SheetName);
delete lpszText;
}
return TRUE;
}
BOOL CControlWPS::getWPSExcelText( CString& strText )
{
CStringArray m_SheetNames;
GetSheetNames( m_SheetNames );
for ( int nint = 0; nint < m_SheetNames.GetSize(); nint++ )
{
CString cs = m_SheetNames.GetAt( nint );
OpenSheet( cs );
__int64 rows;
__int64 column;
getRowsAndColumn( rows, column );
int j = 0, i = 0, k = 0;
BOOL bRet;
CString value;
while ( 1 )
{
j = 0;
while ( 1 ){
value = "";
bRet = ReadCell( value, j, i );
if ( !bRet || j > column ) break;
j++;
if ( value != "(null)" )
{
strText += value;
strText += " ";
// OutputDebugString( value );
// OutputDebugStringA( " " );
}
if ( value == "(null)" || value.IsEmpty() )
{
strText += " ";
//OutputDebugStringA( " " );
}
}
strText += "\n";
//OutputDebugStringA( "\n" );
i++;
if ( i > rows )
break;
}
}
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 = GetProp
窝米逗佛~
- 粉丝: 10
- 资源: 4
最新资源
- 全开源代码,无感FOC控制风机代码 全开源代码,代码基于国产MCU芯片,大厂成熟风机量产程序,龙博格电机观测器观测角度,SVPWM,支持顺逆风启动,五段式与七段式调制等源码 国产大部分芯片通用,不是
- 基于Matlab Simulink搭建微电网逆变并网系统: 1.采用VSG同步机控制策略 2.采用下垂控制策略 仿真波形较好
- 异步电机,感应电机各种仿真模型,有自抗扰控制,模型预测控制,滑模控制,间接磁场定向,直接磁场定向,无速度传感器仿真
- 基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有) 附: 1.配套quartus从MATLAB系数生成直到仿真成功说明文档 2.配套仿真出波形的视频
- 遗传算法-旅行商问题(TSP)优化 Matlab代码可用于路径规划,物流配送,路径优化 源码+注释 数据可以修改 多少个坐标都行 帮忙改数据就是另外的价钱旺柴 代码一经出概不 望理解
- 蚁群算法-旅行商问题(TSP)优化 Matlab代码可用于路径规划,物流配送,路径优化 源码+注释 数据可以修改 多少个坐标都行 帮忙改数据就是另外的价钱旺柴 代码一经出概不 望理解
- 该模型为PMSM的脉振高频注入法识别电机在低速下的位置,注入d轴,信号进在q轴进行幅值调制经LPF得到转子误差信号,经过PLL得到电机的转子位置 附带参考文献
- PackagingTool 图片打包最新版本2.1.1.0,可作为二进制文件合并工具,是嵌入式开发的好帮手! 更新时间:2024/11/13 本链接为软件作者本人,欢迎下载,欢迎转发,转发请注明出处
- 基于DP动态规划的全局最优能量管理策略,程序为MATLAB m编程完成,大约700行左右 1.车辆构型为功率分流型(ECVT),类似丰田Pruis构型 2.电池SOC为电量维持型策略 3.全程序
- 风光柴储微电网经济调度(Matlab) 微电网优化调度作为智能电网优化的重要组成部分,对降低能耗、环境污染具有重要 意义 微电网的发展目标既要满足电力供应的基本需求,又要提高经济效益和环境保护 本
- Comsol热-流-固四场耦合增透瓦斯抽采,包括动态渗透率、孔隙率变化模型,涉及pde模块等四个物理场
- SVG无功补偿,MATLAB仿真,三相静止无功发生器,静止同步补偿器,动态无功发生器,动态无功补偿
- IMG_20241228_204834.jpg
- 基于模型预测控制的异步电机电流调节器设计 (1)、为了解决传统pi调节器设计依赖电机参数的问题,提出一种基于MPC设计的电流调节器; (2)、经过变参(变互感和变定子电阻)验证,采用基于MPC设计的电
- AVL CRUISE 电动汽车模型,纯电动汽车整车仿真,AMT电车模型,两挡位模型,可随意编辑与参考
- MATLAB代码:微电网两阶段鲁棒优化经济调度程序 关键词:微网优化调度 两阶段鲁棒 CCG算法 经济调度 参考文档:《微电网两阶段鲁棒优化经济调度方法》 仿真平台:MATLAB YALMIP+CPL
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈