硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5608|回复: 0
收起左侧

XE7导入导出excel数据

[复制链接]

19

主题

2

回帖

29

积分

新手上路

积分
29
发表于 2015-8-4 12:12:31 | 显示全部楼层 |阅读模式
   前段时间我在做有关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_



   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 14:56 , Processed in 0.146114 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表