;ConnectTo(EWS3P);
EWS3->Activate();
}
我们知道,缺省情况下,一个空白的Excel Workbook有三个空白的Worksheet,所以上文中我用三个ExcelWorksheet控件来连接这三个Worksheet。
我们既可以用表的名字(如“Sheet1”),也可以用表的序号(如“2”)来作为一个表的索引号。请注意V方法,它也是我定义的一个宏:
#define V TVariant
所以,它只是一个用来构造TVariant参数的宏。它和上面的TNP宏都是蛮有用的定义。
下面是一些针对Excel Worksheet的操作,不再一一详细说明。
void __fastcall TMainForm::MoveSheetBtnClick(TObject *Sender)
{
EWS1->Move(TNP, V(EWB->Worksheets->get_Item(V("Sheet3"))), 0);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::RenameBtnClick(TObject *Sender)
{
String NewName;
InputQuery("Rename Excel Worksheet", "Input a new name", NewName);
EWS1->set_Name((WideString)NewName);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CreateBtnClick(TObject *Sender)
{
EWS4->ConnectTo(EWB->Sheets->
Add(TNP,V(EWB->Worksheets->get_Item(V("Sheet3"))),V(1),V(xlWorksheet)));
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DelSheetBtnClick(TObject *Sender)
{
EWS2->Delete(0);
}
我们已经操作到了Worksheet级别,但是在我们日常操作中,接触最多的是Range(范围)和Cell(单元格),在后文我们将继续深入讨论,并讨论如何连接数据库、如何画数据图,以及如何用TExcelQueryTable加速数据导入的方法。
这样生成的Excel Application只是一个空架子。我们要增加Workbook(工作簿)。
(二) ExcelWorkbook的创建和相关操作
如果我们把ExcelWorkbook简单的理解为等价于一个xls文件,应该不会差别太大,而且应该对我们有帮助。它的控件图标是 。我们来看如何创建Workbook,代码如下:
void __fastcall TMainForm::EWBBtnClick(TObject *Sender)
// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=1044&d=xr3888
{
EWB->ConnectTo(EA->Workbooks->Add(TNP, 0));
... ...
}
首先,我们要连接到一个Workbook的接口上去,这里我们用的是新增一个Workbook的方式。注意TNP参数,我们会在很多场合使用它。它是我自己程序中定义的一个宏:
#define TNP TNoParam()
而第二个参数0,则又是Locale ID(简称LID)。
ExcelWorkbook还可以用来连接——或者说“打开”更恰当——一个现有的Workbook(一个xls文件),具体代码如下:
EWB->ConnectTo(EA->Workbooks->Open((WideString)"c:\\temp\\test.xls",
TNP, TNP, TNP, TNP,
TNP, TNP, TNP, TNP,
TNP, TNP, TNP, TNP, 0));
上述代码中打开了位于c:\temp下的test.xls文件。这个方法有很多参数,一般我都会传递TNP给它。具体参数的含义,可以参考相关文档。
(三) ExcelWorksheet的操作
在上文连接Workbook的代码中,我也同时连接了TExcelWorksheet,其控件图标是 。所以完整的代码段如下:
void __fastcall TMainForm::EWBBtnClick(TObject *Sender)
{
EWB->ConnectTo(EA->Workbooks->Add(TNP, 0));
// Connect to worksheet as w
|