请教如何将Excel文件导入BCB 自带数据库内

likekite 2006-07-21 12:24:40
请教如何将Excel文件导入BCB 自带数据库内!
...全文
331 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Super.Jiju 2006-07-24
  • 打赏
  • 举报
回复
用ofice空间还是 比较容易的

void __fastcall TImport::LMDButton1Click(TObject *Sender)
{
Table1->Active=true;

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("DELETE FROM temp_return");
Query1->ExecSQL();
WideString aa;
if (OpenDialog1->Execute())
{
aa=OpenDialog1->FileName;
try{
ExcelApplication1->Connect(); //EXCEL APPLICATION 连接
}
catch (Exception&exception)
{
ShowMessage("Cannot connect to Excels!");
Abort();
}
ExcelApplication1->Workbooks->Open(aa);
ExcelWorkbook1->ConnectTo(ExcelApplication1->get_ActiveWorkbook());
ExcelApplication1->set_Visible(0,false); //指定EXCEL视窗为可视
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->get_ActiveSheet()) ;
LMDEdit1->Text=aa;
ShowMessage("OK!You can import the data now!");
//LMDButton2->Enabled=true;
}
}
//---------------------------------------------------------------------------

void __fastcall TImport::LMDButton2Click(TObject *Sender)
{
int a=ExcelWorksheet1->UsedRange[0]->Rows->Count;
for (int i=2;i<=a;i++)
{
Variant row(i);
Variant col1(1),col2(2),col3(3),col4(4),col5(5);
Variant s1,s2,s3,s4,s5;
Table1->Append();
s1=ExcelWorksheet1->Cells->get__Default(row,col1);
s2=ExcelWorksheet1->Cells->get__Default(row,col2);
s3=ExcelWorksheet1->Cells->get__Default(row,col3);
s4=ExcelWorksheet1->Cells->get__Default(row,col4);
s5=ExcelWorksheet1->Cells->get__Default(row,col5);

Table1->FieldByName("Dealer_Code")->AsString=String(s1);
Table1->FieldByName("Product")->AsString=String(s2);
Table1->FieldByName("Fault")->AsString=String(s3);
Table1->FieldByName("R_Date")->AsString=String(s4);
Table1->FieldByName("Province")->AsString=String(s5);
Table1->Post();
}
//LMDButton3->Enabled=true;
ShowMessage("OK!");
ExcelApplication1->Workbooks->Close();
}
我来看看CB 2006-07-22
  • 打赏
  • 举报
回复
FromExcelSaveDataSet(AnsiString mFile,TDataSet *amDataSet,
AnsiString fm_num,AnsiString jc_xiangmu,MBaseDefine *mBaseDef)
{
/*
Variant Variant::OlePropertyGet(属性名,参数….);
// 取对象属性
Void Variant::OlePropertySet(属性名,参数….);
// 设置对象属性
Variant Variant::OleFunction(函数名,参数….);
// 运行对象的函数
void Variant::OleProcedure(过程名,参数….);
// 运行对象的过程

其头文件“vcl\utilcls.h”必须嵌在用户程序中,
对于这四个长长的方法名可在程序中用宏语句重新定义一下:
#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcedure

例如对于VB的提交语句:
Ex.ActiveWorkBook.ActiveSheet.Cells(1,2).Value=3
为便于理解在C++Builder对应的语句可分解为如下四句:
Variant t1=Ex.OlePropertyGet("ActiveWorkBook");
Variant t2=t1.OlePropertyGet("ActiveSheet");
Variant t3=t2.OlePropertyGet("Cells,1,2);
t3.OlePropertySet("Value",3);
可去掉中间变量将这四句合为一句,就是:
Ex.PG("ActiveWorkBook").PG("ActiveSheet").
PG("Cells",1,2).PS("Value",3);
*/
bool Result;
Result = false;

int i,j;
AnsiString *mstr;
MBaseInfo *mBaseInfo;
mDataSet=amDataSet;

Variant WorkBooks;
Variant WorkBook,Sheet1;
Variant Range1;

try
{
mExcel_App=CreateOleObject(Str_Office_OLE_Program+".Application");
}
catch(...)
{
ShowMessage("不能创建"+Str_Office_OLE_Program+"程序,请查看是否安装"+Str_Office_OLE_Program);
return false;
}
try
{
WorkBooks=mExcel_App.OlePropertyGet("WorkBooks");
WorkBooks.OleProcedure("Open",mFile.c_str());
WorkBook=mExcel_App.OlePropertyGet("ActiveWorkBook");
WorkBook.OlePropertyGet("Sheets",(Variant)1).OleProcedure("Select");

Variant Worksheets =WorkBook.OlePropertyGet("WorkSheets");

Sheet1=WorkBook.OlePropertyGet("ActiveSheet");

int col,row;
col=Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count");//列数
row=Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count");//行数

if(col>=mBaseDef->UseCount)
{
col=mBaseDef->UseCount;// 现在使用的字段数目
}

mstr=new AnsiString[col];

mDataSet->DisableControls();

mDataSet->Edit();
if(mDataSet->RecordCount>0)
mDataSet->Last();



for(i=1;i<=row;i++)
{
for(j=1;j<=col;j++)
{
mstr[j-1]=Sheet1.OlePropertyGet("Cells",i,j);
}

mDataSet->Append();
for(j=0;j<col;j++)
{
mBaseInfo=mBaseDef->Get(j);
mDataSet->Edit();
mDataSet->FieldByName(mBaseInfo->Define)->AsString = mstr[j];
mDataSet->Post();

}
}
WorkBook.OleProcedure("Close");
Result = true;
}
__finally
{
mExcel_App.OleProcedure("Quit");
mExcel_App=Unassigned;
mDataSet->First();
mDataSet->EnableControls();
delete []mstr;
}

return Result;
}
likekite 2006-07-21
  • 打赏
  • 举报
回复
自己写代码!
jaffy 2006-07-21
  • 打赏
  • 举报
回复
是通过外部程序导,还是自己写代码来导?

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧