C++ Builder 与 EXCEL 连结取值与存值

C++ Builder 与 EXCEL 连结取值与存值
--------------------------------------------------------------------------------
原文出处:
http://programmer.eforum2000.net/pc2020v5/forum/ShowSameTitle.asp?board_pc2020=cb&index=1&id=6259&mode=&type_pc2020=sametitleLevel-2

引言:
--------------------------------------------------------------------------------
这个方法刚刚好解决了我手边的一个大问题,其他讨论区的方法大多行不通
--------------------------------------------------------------------------------


下面的例子,是我在其他讨论区看到的,而上面的引言是一位网友的使用感想



void __fastcall TForm1::Button1Click(TObject *Sender)
{
  WideString aa; //定义aa
  if (OpenDialog1->Execute()) //直接打开档案选择视窗
{
  aa=OpenDialog1->FileName; //指定档名
  ExcelApplication1->Connect(); //EXCEL APPLICATION 连接
  ExcelApplication1->Workbooks->Open(aa);
  ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
  ExcelApplication1->set_Visible(0,true); //指定EXCEL视窗为可视
  ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
  //连接工作表
}
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant v5(1);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__default(v5,v6); //取列1栏1的值
//若要写入值可用
ExcelWorksheet1->Cells->set__default(v5,v6,KKK);//将列1栏1的值写入ddd
}


~我也是在学习的阶段,所以请您多多见谅与指教~

补充:
http://delphi.ktop.com.tw/topic.asp?topic_id=54813

--------------------------------------------------------------------------------
前辈:

对不起,我知道这样真的很麻烦您,可是我真的"很用心"去看您给的程式
我刚在起步,如果您不嫌弃的话...可不可以给我的"注解"修改,
或者是更正我的错误,......

拜托您了.....感恩~

●☆:是晚辈的问题注解...


void __fastcall TForm1::Button1Click(TObject *Sender)
{
1 WideString aa; //定义aa
2 if (OpenDialog1->Execute()) //直接打开档案选择视窗
3 {
4 aa=OpenDialog1->FileName; //指定档名

●☆// Q: 将档名放进去,需要加路径吗?ex:C:\1.xls
●☆// 可是我加了,compiler後,还是错耶~

5 ExcelApplication1->Connect(); //EXCEL APPLICATION 连接
6 ExcelApplication1->Workbooks->Open(aa);
7 ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
8 ExcelApplication1->set_Visible(0,true); //指定EXCEL视窗为可视
9 ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
10 //连接工作表
11 }
12 }

●☆// Q: Button1Click的动作是连接 bcb 和 excel ?然後让 excel 可以被看到?


void __fastcall TForm1::Button2Click(TObject *Sender)
{
13 Variant v5(1);
14 Variant v6(1);
15 Variant v7;
16 Variant KKK(String("ddd"));
17 v7=ExcelWorksheet1->Cells->get__default(v5,v6); //取列1栏1的值
18 //若要写入值可用
19 ExcelWorksheet1->Cells->set__default(v5,v6,KKK);//将列1栏1的值写入ddd
20 }


●☆// Q:(1) Variant 是宣告成什麽型态的函数?
(2) v5(1),v6(1)是什麽意思?
(3) 13~16行,这样的宣告模式,主要的目的是?

●☆// Q: 以下是我compiler程式所出现的错误:

1. [C++ Error] Unit1.cpp(23): E2280 Member identifier expected
●☆//第一行指的是什麽意思阿?

●☆// 3~5行以下通通都是找不到耶!!
是不是要放什麽 VCL 的元件阿?
------------------------------------------------------------------------------------------------
2. [C++ Error] Unit1.cpp(24): E2451 Undefined symbol 'ExcelApplication1'
3. [C++ Error] Unit1.cpp(26): E2451 Undefined symbol 'ExcelWorkbook1'
4. [C++ Error] Unit1.cpp(28): E2451 Undefined symbol 'ExcelWorksheet1'
5. [C++ Error] Unit1.cpp(40): E2451 Undefined symbol 'ExcelWorksheet1'

--------------------------------------------------------------------------------

出现的错误,.......,不知道是为什麽?????

Build
[C++ Error] Unit1.cpp(43): E2316 'get__default' is not a member of 'Range'
[C++ Error] Unit1.cpp(45): E2316 'set__default' is not a member of 'Range'


以下为我key的程式..
------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
WideString aa; //定义aa
if (OpenDialog1->Execute()) //直接打开档案选择视窗
{
aa=OpenDialog1->FileName; //指定档名
ExcelApplication1->Connect(); //EXCEL APPLICATION 连接
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelApplication1->set_Visible(0,true); //指定EXCEL视窗为可视
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
//连接工作表
}
}


//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant v5(1);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__default(v5,v6); //取列1栏1的值
//若要写入值可用
ExcelWorksheet1->Cells->set__default(v5,v6,KKK);//将列1栏1的值写入ddd
}

--------------------------------------------------------------------------------

出现的错误,.......,不知道是为什麽?????

Build
[C++ Error] Unit1.cpp(43): E2316 'get__default' is not a member of 'Range'
[C++ Error] Unit1.cpp(45): E2316 'set__default' is not a member of 'Range'

以下为我key的程式..
------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
WideString aa; //定义aa
if (OpenDialog1->Execute()) //直接打开档案选择视窗
{
aa=OpenDialog1->FileName; //指定档名
ExcelApplication1->Connect(); //EXCEL APPLICATION 连接
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelApplication1->set_Visible(0,true); //指定EXCEL视窗为可视
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet());
//连接工作表
}
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant v5(1);
Variant v6(1);
Variant v7;
Variant KKK(String("ddd"));
v7=ExcelWorksheet1->Cells->get__default(v5,v6); //取列1栏1的值
//若要写入值可用
ExcelWorksheet1->Cells->set__default(v5,v6,KKK);//将列1栏1的值写入ddd
}

--------------------------------------------------------------------------------
出现的错误,.......,不知道是为什麽?????

Build
[C++ Error] Unit1.cpp(43): E2316 'get__default' is not a member of 'Range'
[C++ Error] Unit1.cpp(45): E2316 'set__default' is not a member of 'Range'

===

用法错误而已

将'get__default' 及'set__default'改成'get__Default'及'set__Default'

即可解决