您的位置:首页 > 编程语言 > C语言/C++

C++ Builder中导入Excel表格数据

2016-04-12 14:00 477 查看
撰写本文思路主要来自于www.ccrun.com

/[b]**********************************[/b]

**编写工具及平台

**C++ Builder 6.0

** WIN7 X86

**Excel表格类型:Microsoft Excel 97-2003 工作表

[b]***********************************[/b]/

//Excel.hpp
//需要在头文件中添加如下的头文件及创建宏,此宏的原作者为ccrun
#include <OleServer.hpp>
//读取Excel导入信息时,为方便操作建立的宏
#define   PG   OlePropertyGet
#define   PS   OlePropertySet
#define   FN   OleFunction
#define   PR   OleProcedure


//Excel.cpp
#include "Comobj.hpp"
OpenDialog1->Filter = "execl文件(.xls)|*.xls";
OpenDialog1->DefaultExt = "*.xls";

if (OpenDialog1->Execute())
{
Variant ExcelApp;       //ExcelApplication
Variant Workbook1;      //ExcelWorkbook
Variant Sheet1;

try
{
ExcelApp = Variant::CreateObject("Excel.Application");
}
catch(...)
{
::MessageBox(0, "无法启动 Excel,请检查 Excel程序 是否安装。", "加载Excel数据", MB_OK | MB_ICONWARNING);
return;
}
//上述工程创建代码必须要进行初始化。这一步非常重要

//下述代码在打开workbook及worksheet时,为了保持兼容性,需要强制转化String为WideString类型。
ExcelApp.PG(WideString(L"Workbooks")).FN(WideString(L"open"), WideString(OpenDialog1->FileName));
//初始化Workbook
Workbook1 = ExcelApp.PG(WideString(L"ActiveWorkbook"));
//初始化Sheet
Sheet1 = Workbook1.PG(WideString(L"ActiveSheet"));
//获取当前Sheet名称
FSheetName = Sheet1.PG(WideString(L"name"));

//获取单元格中的数据信息,其中row及col为单元格所在行号及列号
AnsiString ansCellData;
ansCellData = Sheet1.PG("Cells", row, col).PG("Value");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息