2008年12月
123456
78910111213
14151617181920
21222324252627
28293031
日 志 标 题 点击
[转]乞丐的一句话,... 933
毕业了才明白的十件事 961
告诉你一个真实的关于... 856
程序员等于妓女 1009
学历怎么了 1116
Google和百度收... 597
男人与女人的50个客... 758
女人身上几点令人生厌... 750
属相姻缘搭配|生肖姻... 685
用PHP写MySQL... 407
PHP如何生成动态图... 406
精彩对联 450
那些去男生宿舍过夜让... 1720
大学不同居是傻子! 1058
梦想一夜情的女子竟如... 935
女大学生毕业不忙工作... 1015
中文系学生超强请假条 875
各地娶老婆的成本核算 995
把本地Access的... 1663
大学女生语录(经典) 1786
感谢上苍,让我娶了个... 578
三个处女结婚后的反映... 656
最能打动女人芳心10... 609
非处10大恶心语录风... 691
女生们,看完之后你会... 1127
大学生退学背后的众生... 592
[转]傻丫头, 没了... 637
[转]请珍惜你身边的... 626
今夜因你而失眠 813
[转]一个感人的故事 619
世界上有一种爱叫凄美 643
令老板晕倒的简历 673
中国的车牌号大全 406
 
 
全部文章生活感慨科技新闻网络编程电脑故障Linux
把本地Access的数据导出成xls文件
[作者:admin] [来自:互联网络] [天气:晴朗] [阅读:1663次]
/***************************************************************************
//将数据集得数据导出到Excel;
//void DataSetToExcel(TDataSet* DataSet,bool DisplayByRow); // DisplayByRow:表按行排(正常)
//最后修改时间 2004-5-25
****************************************************************************/

代码:
void DataSetToExcel(TDataSet* DataSet,bool DisplayByRow)
{
//#define Excel_Test
        Variant Ex,Wbs,Wb,Sh1;
     Screen->Cursor = crHourGlass ;
        if(Ex.IsEmpty())
#ifdef Excel_Test
        try
        {
                Ex  = Variant::CreateObject("Excel.Application");
              //  Wbs = (Ex.OlePropertyGet("Workbooks")).OleFunction("Add");//新建一新工作薄
              //  Sh1 = Wbs.OlePropertyGet("ActiveSheet");
        }
#else
         try
        {
           HWND hPrevApp = ::FindWindow(NULL,"Microsoft Excel");
           if(hPrevApp == NULL)    // 如果没有找到已经打开的 Excel 活动窗口
             {
                Ex = Variant::CreateObject("Excel.Application"); //启动Excel
             }
           else
             {
                Ex = Variant::GetActiveObject("Excel.Application");
             }
        }
#endif
         catch(...)
        {
           Screen->Cursor=crDefault;
           ShowMessage("打开Excel出错,请确认你已经正确安装了MS Office!");
           return;
        }
       try
         {
//            if(Ex.OlePropertyGet("ActiveWorkBook").IsEmpty())    // 如果当前没有活动的工作薄
           {
                        Ex.OlePropertyGet("WorkBooks").OleProcedure("ADD"); //新建一新工作薄
                }
            if(Wb.IsEmpty())
           {
                        Wb=Ex.OlePropertyGet("ActiveWorkBook");
                }
            Sh1 = Wb.OlePropertyGet("ActiveSheet");

                Sh1.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Size",10);
         }
       catch(...)
         {
            Ex = Ex.Empty();
            Wb = Wb.Empty();
            DataSetToExcel(DataSet, DisplayByRow);
         }

       if(DisplayByRow)
         {
                int CurrCol = 0;
            for (int j=0; j<DataSet->Fields->Count; j++)
               {
                  if(DataSet->Fields->Fields[j]->Visible)
                    {
                         CurrCol++;
                      Sh1.OlePropertyGet("Cells", 1, CurrCol).OlePropertySet(
                                        "value",DataSet->Fields->Fields[j]->FieldName.c_str());
                                Sh1.OlePropertyGet("Cells", 1, CurrCol).OlePropertyGet("Font").OlePropertySet("Bold",true);
                    }
               }
            DataSet->First();
             int i = 0;
             while(!DataSet->Eof)
                {
                    CurrCol=0;
                    for (int j=0; j<DataSet->Fields->Count; j++)
                   {
                      if(DataSet->Fields->Fields[j]->Visible)
                        {
                             CurrCol++;
                             Sh1.OlePropertyGet("Cells", i+2, CurrCol).OlePropertySet(
                                                "value", DataSet->Fields->Fields[j]->AsString.c_str());
                        }
                   }
                    Application->ProcessMessages();
                    DataSet->Next();
                    i++;
                 }
         }
       else
         {
                int CurrRow = 0;
           for (int j=0; j<DataSet->Fields->Count; j++)
           {
                if(DataSet->Fields->Fields[j]->Visible)
                  {
                     CurrRow++ ;
                     Sh1.OlePropertyGet("Cells", CurrRow, 1).OlePropertySet(
                                        "value", DataSet->Fields->Fields[j]->FieldName.c_str());
                     DataSet->First();
                     int i=0;
                     while(!DataSet->Eof)
                       {
                            Sh1.OlePropertyGet("Cells",CurrRow,i+2).OlePropertySet(
                                                "value", DataSet->Fields->Fields[j]->AsString.c_str());
                         Application->ProcessMessages();
                         DataSet->Next();
                         i++;
                       }
                  }
           }
         }
       Ex.OlePropertySet("Visible", (Variant)true);  //使Excel启动后可见
       Screen->Cursor=crDefault;
}
//----------------------------------------------------------------------------

代码:
void ExportToExcelTest()
{
        TADODataSet * adoTemp = new TADODataSet(NULL);
        adoTemp->Connection = ADODataSet1->Connection;//可以是其他连接
     adoTemp->Active = false;
            adoTemp->CommandText = "Select * From test";
            adoTemp->Active = true;
            DataSetToExcel(adoTemp, true);
            delete adoTemp;
}

本日志由 admin 于 2007-7-7 11:38:20 编辑
请在下面填写你的评论内容
您的大名:  验证码:  
评论内容: 评论内容支持HTML
上传图片:
相关图片: 网络图片地址
 
 
E-MAIL:shyxh123@sina.com 皖ICP备07001445号  

Copyright © 清风网络工作室 All Rights Reserved.