|
前段时间我在做有关XE7(更准确的说是c++ builder)导入导出excel数据的应用,在网上找了一下,感觉做excel的导入导出,一般有两种方法:ole 和 XE7自带office2k控件,前者相对来说网上资源更多,做的人也更多,后者网上资源比较零散,做的人也较少,由于个人比较喜欢用控件做,还是选择了后者,XE7要先安装office2k控件,默认XE7是没装的,然后添加TExcelApplication控件,TExcelWorkBook控件,TExcelWorkSheet控件,再然后是写代码,下面附上自己写的代码
void __fastcall TForm1::ImportPlan(TObject *Sender) //导入
{
uint16_t i, j;
AnsiString FileName = ExtractFilePath(Application->ExeName) + mPlanFile;
ExcelApplication1->Connect();
ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->Open((Variant)FileName, TNoParam(), TNoParam(), TNoParam(),TNoParam(),TNoParam(),TNoParam(), TNoParam(),TNoParam(),TNoParam(),TNoParam(), TNoParam(), TNoParam(), 0));
ExcelWorksheet1->ConnectTo(ExcelWorkbook1->Worksheets->get_Item((Variant)(1)));
int Bounds[4] = {0, 93, 0, 9};
Variant Datas = VarArrayCreate(Bounds, 3, varVariant);
for(i = 0; i < 93; i++)
{
for(j = 0; j < 10; j++)
{
Datas.PutElement(ExcelWorksheet1->Cells->get_Item((Variant)(i + 1),(Variant)(j + 1)), i, j);
}
}
//需要判断excel行数小于机台个数***********//
for(int i = 0; i < 92; i++)
{
mDev1 = Datas.GetElement(i + 1, 0);
}
}
void __fastcall TForm1::ExportPlan(TObject *Sender) //导出{
AnsiString s; int Bounds[4] = {0, 93, 0, 1};
Variant Datas = VarArrayCreate(Bounds, 3, varVariant);
AnsiString FileName = ExtractFilePath(Application->ExeName) +FormatDateTime("yyyy-mm-dd",Date()) + ".xls"; ExcelApplication1->Connect();
ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->Add(TNoParam(),0)); ExcelWorksheet1->ConnectTo(ExcelWorkbook1->Worksheets->get_Item((Variant)(1)));
ExcelWorksheet1->get_Columns()->set_ColumnWidth((Variant)18);
ExcelWorksheet1->Cells->set_Item((Variant)1, (Variant)1, (Variant)"日期");
for(int i = 0; i < 92; i++) {
Datas.PutElement(Date(), i, 0); }
ExcelWorksheet1->get_Range((ExcelWorksheet1->Cells->get_Item((Variant)1,(Variant)1)),(ExcelWorksheet1->Cells->get_Item((Variant)93,(Variant)1)))->set_Value(Datas); ExcelWorkbook1->SaveAs((Variant)FileName, (Variant)39, TNoParam(), TNoParam(), TNoParam(), TNoParam(), 1, TNoParam(), TNoParam(), TNoParam(), TNoParam(), 0);
ExcelWorksheet1->Disconnect(); ExcelWorkbook1->Disconnect();
ExcelApplication1->Disconnect(); ExcelApplication1->Workbooks->Close(0);
}office控件做excel可以看office 2000 excel的VBA帮助文档,VBA是专门设计excel的编程语言,里面的一些控件的方法和参数跟office控件的方法和参数大致相同。最后再附上一个资料网址
http://wenku.baidu.com/link?url= ... 6FCVQlsvetHAxPxHbz_
|
|