MFC 对excel2007简单操作
来源:互联网 发布:上海闵行区网络新村 编辑:程序博客网 时间:2024/06/07 16:33
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode= 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(),0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
HRESULT hr=NULL;
// 初始化 COM 库
hr = CoInitialize(NULL);
if(FAILED(hr))
{
_tprintf(_T("错误: COM 初始化失败\n"));
nRetCode = 1;
return nRetCode;
}
LPDISPATCH lpDisp=NULL;
CLSID clsid;
::COleDispatchDriver codd;
COleException* pError=new COleException;
// 获得EXCEL的CLSID
::CLSIDFromProgID(L"Excel.Application",&clsid);
// 打开 Excel Application 。
if(!codd.CreateDispatch(clsid,pError))
{
pError->Delete();
_tprintf(_T("错误: 打开 Excel Application 失败\n"));
nRetCode = 1;
return nRetCode;
}
CComQIPtr <MSExcel::_Application> pApp(codd.m_lpDispatch);
// 显示 Excell Application。
pApp->PutVisible(0,TRUE);
codd.ReleaseDispatch();
CComQIPtr <MSExcel::Workbooks> pCurDocs;
CComQIPtr <MSExcel::_Workbook> pCurDoc;
CComQIPtr <MSExcel::_Worksheet> pCurSheet;
CComQIPtr <MSExcel::Range> pCurRange;
COleVariant vTrue((short)TRUE),vFalse((short)FALSE);
COleVariant vNull(L"");
COleVariant vZero((short)0);
COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// 保存文件名。
COleVariant vDocName(L"CppUseExcel.xlsx");
// 获取 Workbooks。
pCurDocs=pApp->GetWorkbooks();
// 新建空白工簿。
pCurDoc=pCurDocs->Add(vNull,0);
// 获取 Sheet1 。
pCurSheet = pCurDoc->Sheets->GetItem(1);
// 获取 Sheet1 的 A1 单元格,并填写初始值.
pCurRange = pCurSheet->GetRange(L"A1");
int initValue= 1234;
pCurRange->FormulaR1C1= initValue;
// 获取 Sheet1 的 A1 单元格的值.
int nValueA1= pCurRange->GetValue2();
// 获取 [C2,E5] 单元格,并填写初始值.
pCurRange = pCurSheet->GetRange(L"C2",L"E5");
pCurRange->FormulaR1C1= initValue;
// 获取 Sheet1 的 [C2,E5] 单元格的值.
_variant_t vC2E5= pCurRange->GetValue2();
// 获取 Sheet2 ,并将 Sheet1 A1 单元格的值乘以 2 后填入 Sheet2 的 A1 单元格.
// Sheet1 [C2,E5] 单元格的值乘以 2 后填入 Sheet2 的 [C2,E5] 单元格.
pCurSheet = pCurDoc->Sheets->GetItem(2);
pCurRange = pCurSheet->GetRange(L"A1");
pCurRange->FormulaR1C1= nValueA1 *2;
pCurRange = pCurSheet->GetRange(L"C2",L"E5");
// 这里涉及到对 SAFEARRAY 中元素的操作,暂时不写,如果你确定是
// 在 Range [C2,E5] 中填写数组,我再写这个过程.
pCurRange->FormulaR1C1=vC2E5;
hr = pCurDoc->SaveAs(
vDocName,
xlOpenXMLWorkbook,
vOptional,
vOptional,
vFalse,
vFalse,
xlNoChange,
xlLocalSessionChanges,
vOptional,
vOptional,
vOptional,
vOptional);
if(FAILED(hr))
{
_tprintf(_T("错误: 保存 Excel 文档失败\n"));
pError->Delete();
pApp->Quit();
nRetCode = 1;
return nRetCode;
}
pError->Delete();
pApp->Quit();
}
return nRetCode;
}
{
int nRetCode= 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(),0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
HRESULT hr=NULL;
// 初始化 COM 库
hr = CoInitialize(NULL);
if(FAILED(hr))
{
_tprintf(_T("错误: COM 初始化失败\n"));
nRetCode = 1;
return nRetCode;
}
LPDISPATCH lpDisp=NULL;
CLSID clsid;
::COleDispatchDriver codd;
COleException* pError=new COleException;
// 获得EXCEL的CLSID
::CLSIDFromProgID(L"Excel.Application",&clsid);
// 打开 Excel Application 。
if(!codd.CreateDispatch(clsid,pError))
{
pError->Delete();
_tprintf(_T("错误: 打开 Excel Application 失败\n"));
nRetCode = 1;
return nRetCode;
}
CComQIPtr <MSExcel::_Application> pApp(codd.m_lpDispatch);
// 显示 Excell Application。
pApp->PutVisible(0,TRUE);
codd.ReleaseDispatch();
CComQIPtr <MSExcel::Workbooks> pCurDocs;
CComQIPtr <MSExcel::_Workbook> pCurDoc;
CComQIPtr <MSExcel::_Worksheet> pCurSheet;
CComQIPtr <MSExcel::Range> pCurRange;
COleVariant vTrue((short)TRUE),vFalse((short)FALSE);
COleVariant vNull(L"");
COleVariant vZero((short)0);
COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// 保存文件名。
COleVariant vDocName(L"CppUseExcel.xlsx");
// 获取 Workbooks。
pCurDocs=pApp->GetWorkbooks();
// 新建空白工簿。
pCurDoc=pCurDocs->Add(vNull,0);
// 获取 Sheet1 。
pCurSheet = pCurDoc->Sheets->GetItem(1);
// 获取 Sheet1 的 A1 单元格,并填写初始值.
pCurRange = pCurSheet->GetRange(L"A1");
int initValue= 1234;
pCurRange->FormulaR1C1= initValue;
// 获取 Sheet1 的 A1 单元格的值.
int nValueA1= pCurRange->GetValue2();
// 获取 [C2,E5] 单元格,并填写初始值.
pCurRange = pCurSheet->GetRange(L"C2",L"E5");
pCurRange->FormulaR1C1= initValue;
// 获取 Sheet1 的 [C2,E5] 单元格的值.
_variant_t vC2E5= pCurRange->GetValue2();
// 获取 Sheet2 ,并将 Sheet1 A1 单元格的值乘以 2 后填入 Sheet2 的 A1 单元格.
// Sheet1 [C2,E5] 单元格的值乘以 2 后填入 Sheet2 的 [C2,E5] 单元格.
pCurSheet = pCurDoc->Sheets->GetItem(2);
pCurRange = pCurSheet->GetRange(L"A1");
pCurRange->FormulaR1C1= nValueA1 *2;
pCurRange = pCurSheet->GetRange(L"C2",L"E5");
// 这里涉及到对 SAFEARRAY 中元素的操作,暂时不写,如果你确定是
// 在 Range [C2,E5] 中填写数组,我再写这个过程.
pCurRange->FormulaR1C1=vC2E5;
hr = pCurDoc->SaveAs(
vDocName,
xlOpenXMLWorkbook,
vOptional,
vOptional,
vFalse,
vFalse,
xlNoChange,
xlLocalSessionChanges,
vOptional,
vOptional,
vOptional,
vOptional);
if(FAILED(hr))
{
_tprintf(_T("错误: 保存 Excel 文档失败\n"));
pError->Delete();
pApp->Quit();
nRetCode = 1;
return nRetCode;
}
pError->Delete();
pApp->Quit();
}
return nRetCode;
}
- MFC 对excel2007简单操作
- MFC 创建和操作Excel2007 文件
- VC2008操作Excel2007总结
- poi 操作excel2007总结
- POI 操作excel2007问题
- poi 操作excel2007总结
- VC2008操作Excel2007总结
- python 操作excel2007
- vc2008 操作excel2007
- MFC对文件的操作
- MFC对文件的操作
- MFC对文件的操作
- MFC实现对文件操作
- MFC对注册表的操作
- MFC对注册表的操作
- MFC对MYSQL数据库操作
- MFC对XML的操作
- 在jdk1.4,weblogic8.1的基础上实现对excel2007的读写操作
- ZigBee学习笔记_osal_int_disable()
- POJ 1275 Drainage Ditches
- 技术网站
- LR中java vuser直接连接数据库脚本
- CSS与网站优化
- MFC 对excel2007简单操作
- MongoDB由来
- oracle的sqlplus登陆的时候老报错:ORA-12560: TNS: 协议适配器错误
- CMD 查询所有服务
- ZXCK在线翻译效果截图
- 如何使用LoadRunner8.1的java Vuser协议调用jar文件
- 浅谈PHP代码设计结构
- jquery ajax 后台绑定select
- js插入java代码渲染form数据