龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

如何在C++中将数据库数据分行和列保存到Excel中(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
第二种方法:直接从ADO把数据导出来 Variant ExcelApp; Variant WorkBook1; Variant Sheet1; Variant Range; Variant Table; Variant QueryTables; int Count; AnsiString ITemp,IStr; AnsiString sS

   第二种方法:直接从ADO把数据导出来

 Variant ExcelApp;

    Variant WorkBook1;

    Variant Sheet1;

    Variant Range;

    Variant Table;

    Variant QueryTables;

    int Count;

    AnsiString ITemp,IStr;

    AnsiString sSQL,sSQLHj, sWhere, sStartDate, sEndDate, sDate;

    try

    {

        ExcelApp=CreateOleObject ("Excel.Application");

    }

    catch(...)

    {

        ShowMessage("运行出错,请确认装了Excel");

        return;

    }

    ExcelApp.OlePropertyGet("WorkBooks").OleFunction("Add");

    ExcelApp.OlePropertyGet("workbooks").OleFunction("Add", "E:Lxrb6.xls");

    WorkBook1=ExcelApp.OlePropertyGet("ActiveWorkBook");

    Sheet1 = WorkBook1.OlePropertyGet("ActiveSheet");

    WorkBook1.OlePropertyGet("Sheets", 1).OleProcedure("Select");

    Sheet1.OlePropertySet("name","小热报6");

    Range=Sheet1.OlePropertyGet("Range","A9");

    QueryTables=Sheet1.OlePropertyGet("QueryTables");

    sSQL="select * from Table" //这里的数据很多,我随便简化下!

    qryTmp->Active=false;

    qryTmp->SQL->Clear();

    qryTmp->SQL->Add(sSQL);

    qryTmp->Active=true;

    Count=qryTmp->RecordCount+12;

    IStr="A9:M"+IntToStr(Count);

    Table=QueryTables.OleFunction("Add",qryTmp->Recordset,Range);

    Table.OlePropertySet("FieldNames",false);

    Range=Sheet1.OlePropertyGet("Range", IStr.c_str());

    Sheet1.OlePropertyGet("Range", "A:K").OlePropertyGet("Columns").OleProcedure("AutoFit"); //自动列宽

    Table.OleProcedure("Refresh",true);

    WorkBook1.OleFunction("SaveAs", "E:6.xls");

    ShowMessage("导出完毕,请检查");

    qryTmp->Active=false;

    ExcelApp.Exec(Procedure("Quit"));

    ExcelApp = Unassigned;

 

   看看哪种合适,就用哪种吧,嘻嘻!

精彩图集

赞助商链接