DBGrid資料匯出到Excel表格中

來源:互聯網
上載者:User

//DBGrid資料匯出到Excel表格
void __fastcall TMDIChild::GridToExcel(TDataSet *DataSet,AnsiString titleB,int n)  //int n指示最後n列不用處理
{ //要匯出資料的DBGrid/匯出到Excel中的標題

  //匯出到Excel開始
  Variant excelApp,workBook,aft,sheetA,range,bef;
  //檢查機器是否安裝了Office
  try{
    //開啟excel應用程式
    excelApp = CreateOleObject("Excel.Application");
  }
  catch(...)
  {
    ShowMessage("運行Excel出錯,請檢查本機是否安裝了Office!");
    return;
  }
  excelApp.OPS("Visible",true); //使應用程式可見
  //建立一個新的excel檔案
  workBook = excelApp.OPG("WorkBooks").OFN("Add");
  workBook = excelApp.OPG("ActiveWorkBook");//開啟活頁簿
  //顯示存在的sheet的數目
  int count = workBook.OPG("sheets").OPG("count");
  aft = workBook.OPG("sheets",count);
  //當前sheet賦值給sheetA
  sheetA = workBook.OPG("ActiveSheet"); 
//表一的標題***************
  //合併儲存格A1到M1,並將A1:M1地區賦值給range
  range = sheetA.OPG("Range","A1:M1");
  range.OFN("Merge",false);//合并用false,拆分用true
  //向儲存格中填寫內容
  sheetA.OPG("Cells",1,1).OPS("Value",titleB.c_str());
  //設定地區字型
  range.OPG("Cells").OPG("Font").OPS("Name","宋體");
  //設定地區字型大小大小
  range.OPG("Cells").OPG("Font").OPS("Size",18);
  //設定垂直對齊-置中
  range.OPG("Cells").OPS("VerticalAlignment",2);
  //設定水平對齊-置中
  range.OPG("Cells").OPS("HorizontalAlignment",3);
//表一的標題結束*************
//表一的表頭****************
  for(int i=0;i<DataSet->Fields->Count-n;i++)
  {
    String str = DataSet->Fields->Fields[i]->DisplayLabel;
    //向儲存格填寫內容
    sheetA.OPG("Cells",2,i+1).OPS("Value",str.c_str());
    //設定邊框     ,速度會較慢
    //sheetA.OPG("Cells",2,i+1).OPG("Borders",1).OPS("LineStyle",1);//左邊框
    //sheetA.OPG("Cells",2,i+1).OPG("Borders",2).OPS("LineStyle",1);//右邊框
    //sheetA.OPG("Cells",2,i+1).OPG("Borders",3).OPS("LineStyle",1);//上邊框
    //sheetA.OPG("Cells",2,i+1).OPG("Borders",4).OPS("LineStyle",1);//下邊框
    sheetA.OPG("Cells",2,i+1).OPS("WrapText",true);//設定自動換行
    sheetA.OPG("Cells",2,i+1).OPS("HorizontalAlignment",3);//設定水平置中
  }
//表一的表頭結束************
//表一的資料開始************
  DataSet->First();
  for(int j=1;j<DataSet->RecordCount+1;j++)
  {
    for(int i=0;i<DataSet->Fields->Count-n;i++)
    {
      String strA = DataSet->Fields->Fields[i]->Text;
      sheetA.OPG("Cells",j+2,i+1).OPS("Value",strA.c_str());
      //加上下面的較慢
      //sheetA.OPG("Cells",j+2,i+1).OPG("Borders",1).OPS("LineStyle",1);//左邊框
      //sheetA.OPG("Cells",j+2,i+1).OPG("Borders",2).OPS("LineStyle",1);//右邊框
      //sheetA.OPG("Cells",j+2,i+1).OPG("Borders",3).OPS("LineStyle",1);//上邊框
      //sheetA.OPG("Cells",j+2,i+1).OPG("Borders",4).OPS("LineStyle",1);//下邊框
    }
    if (!DataSet->Eof)DataSet->Next();
  }     
//表一的資料結束***********
  //結束,如果沒有如下代碼,Excel線程直到應用程式退出才結束
  excelApp=Unassigned;
  workBook=Unassigned;
  aft=Unassigned;
  sheetA = Unassigned;
  range = Unassigned;
  ShowMessage(titleB+"匯出成功!");
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.