国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++中將DBGrid中的數據導出到Word和Excel

2019-11-17 05:43:58
字體:
來源:轉載
供稿:網友

  昨天ccrun剛寫了將ListView中內容導出到Word文檔和Excel文檔的一篇文章,今天寫程序湊巧用到了將DBGrid中數據導出到Office的功能,干脆再寫個兄弟版的函數出來,DBGrid2Word和DBGrid2Excel,分別實現將DBGrid中數據導出到Word和Excel文檔。需要注重的是DBGrid中的數據并不代碼數據庫中所有的數據,因為數據集在打開的時候有可能進行了篩選,取決于使用者如何打開這個數據集,總之就是DBGrid中顯示多少數據,就導出多少。看在寫代碼很辛勞的份上,請在轉載時留下出處和原作者信息。Thank了。:D
   
假如您有好的想法,或者代碼中存在的BUG,歡迎來信討論: info@ccrun.com

2005.10.13 v0.1
初版發布

//---------------------------------------------------------------------------
// 將DBGrid中的數據導出到Word文檔
// v0.1 by ccrun(老妖) 2005.10.13 1:40
//---------------------------------------------------------------------------
void __fastcall DBGrid2Word(TDBGrid *dbg, String strDocFile)
{
    if(!dbg->DataSource->DataSet->Active) // 數據集沒有打開就返回
        return;
    Variant vWordApp, vTable, vCell;
    try
    {
        vWordApp = Variant::CreateObject("Word.application");
    }
    catch(...)
    {
        MessageBox(0, "啟動 Word 出錯, 可能是沒有安裝Word.",
                "DBGrid2Word", MB_OK  MB_ICONERROR);
        vWordApp = Unassigned;
        return;
    }
    // 隱藏Word界面
    vWordApp.Ole    // 新建一個文檔
    vWordApp.OlePropertyGet("Documents").OleFunction("Add");
    //
    Variant vSelect = vWordApp.OlePropertyGet("Selection");
    // 設置一下
字體,大小
    vSelect.OlePropertyGet("Font").OlePropertySet("Size", dbg->Font->Size);
    vSelect.OlePropertyGet("Font").OlePropertySet("Name", dbg->Font->Name.c_str());
    // 要插入表格的行數
    int nRowCount(dbg->DataSource->DataSet->RecordCount + 1);
    nRowCount = nRowCount < 2? 2: nRowCount;
    // 要插入表格的列數
    int nColCount(dbg->Columns->Count);
    nColCount = nColCount < 1? 1: nColCount;
    // 在Word文檔中插入與DBGrid行數列數基本相同的一個表格
    vWordApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Tables")
        .OleProcedure("Add",
        vSelect.OlePropertyGet("Range"),
        nRowCount, // 行數
        nColCount, // 列數
        1, // DefaultTableBehavior:=wdWord9TableBehavior
        0); // AutoFitBehavior:=wdAutoFitFixed
    // 操作這個表格
    vTable = vWordApp.OlePropertyGet("ActiveDocument").
        OleFunction("Range").OlePropertyGet("Tables").OleFunction("Item", 1);
    // 設置單元格的寬度
    for(int i=0; i<nColCount; i++)
    {
        int nColWidth = dbg->Columns->Items[i]->Width;
        vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)
                .OlePropertySet("PreferredWidthType", 3); // wdPreferredWidthPoints
        vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)
                .OlePropertySet("PreferredWidth", nColWidth);
    }
    //----------------------------------------------------------------------------
    // 抱歉,這個提示又來了,為了防止不負責任的轉載者,只好在此留些信息。
    // 作者:ccrun(老妖) info@ccrun.com
    // 本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=635&d=g75jbn
    //----------------------------------------------------------------------------      
    // 先將列名寫入Word表格
    for(int j=0; j<dbg->Columns->Count; j++)
    {
        vCell = vTable.OleFunction("Cell", 1, j + 1);
        vCell.OlePropertySet("Range", dbg->Columns->Items[j]->FieldName.c_str());
        // 列名單元格背景顏色 // wdColorGray125
        vCell.OlePropertyGet("Shading")
                .OlePropertySet("BackgroundPatternColor", 14737632);
    }
    // 將DBGrid中的數據寫入Word表格
    dbg->DataSource->DataSet->First();
    for(int i=0; i<nRowCount; i++)
    {
        // 63 63 72 75 6E 2E 63 6F 6D
        for(int j=0; j<dbg->Columns->Count; j++)
        {
  &n


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙坪坝区| 玛纳斯县| 靖西县| 方正县| 利津县| 新巴尔虎左旗| 洪江市| 吉安市| 六盘水市| 通榆县| 区。| 班玛县| 大城县| 新乡市| 新河县| 玛纳斯县| 泗水县| 滦平县| 合江县| 永康市| 城固县| 东源县| 龙胜| 浦北县| 常熟市| 樟树市| 垦利县| 库伦旗| 通州市| 阿图什市| 淮南市| 齐河县| 当涂县| 和政县| 日喀则市| 镇原县| 石城县| 玛多县| 庄浪县| 繁峙县| 辽阳县|