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

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

C++中將ListView中的內容導出到Word和Excel(新)

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

  經常看到有網友發帖子詢問如何將ListView中的內容導出到ExcelWord文檔中,其實在BCB中用OLE技術來操作,并不復雜,大概是有的人懶的寫吧,于是ccrun(老妖)花了點時間寫了以下兩個函數,實現了將本程序中ListView中內容導出到Excel文檔和Word文檔。看在寫代碼很辛勞的份上,請在轉載時留下出處和原作者信息。Thank了。:D
   
假如您有好的想法,歡迎來信討論: info@ccrun.com

2005.10.13 v0.2
+ 導出表格增加了標題一欄
2005.10.12 v0.1
初版發布

//---------------------------------------------------------------------------
// 將ListView中的內容導出到Word文檔
// v0.2 by ccrun(老妖) 2005.10.13
//---------------------------------------------------------------------------
void __fastcall ListView2Word(TListView *lv, String strDocFile)
{
    Variant vWordApp, vTable, vCell;
    try
    {
        vWordApp = Variant::CreateObject("Word.application");
    }
    catch(...)
    {
        MessageBox(0, "啟動 Word 出錯, 可能是沒有安裝Word.",
                "ListView2Doc", 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", lv->Font->Size);
    vSelect.OlePropertyGet("Font").OlePropertySet("Name", lv->Font->Name.c_str());
    // 要插入表格的行數
    int nRowCount(lv->Items->Count + 1);
    nRowCount = nRowCount < 2? 2: nRowCount;
    // 要插入表格的列數
    int nColCount(lv->Columns->Count);
    nColCount = nColCount < 1? 1: nColCount;
    // 在Word文檔中插入與ListView行數列數相同的一個表格
    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;
        if(lv->Columns->Count > i)
            nColWidth = lv->Columns->Items[i]->Width;
        else
            nColWidth = 100; // 假如沒有設置列,就隨便設置個默認值
        vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)
                .OlePropertySet("PreferredWidthType", 3); // wdPreferredWidthPoints
        vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)
                .OlePropertySet("PreferredWidth", nColWidth * 2);
    }
    //----------------------------------------------------------------------------
    // 抱歉,這個提示又來了,為了防止不負責任的轉載者,只好在此留些信息。
    // 作者:ccrun(老妖) info@ccrun.com
    // 本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=633&d=vytvc6
    //----------------------------------------------------------------------------   
    // 將列名寫入Word表格先
    for(int i=0; i<lv->Columns->Count; i++)
    {
        vCell = vTable.OleFunction("Cell", 1, i + 1);
        vCell.OlePropertySet("Range", lv->Columns->Items[i]->Caption.c_str());
        // 列名單元格背景顏色 // wdColorGray125
        vCell.OlePropertyGet("Shading")
                .OlePropertySet("BackgroundPatternColor", 14737632);
    }
    // 將ListView中的數據寫入Word表格
    for(int i=0; i<nRowCount - 1; i++)
    {
        // 63 63 72 75 6E 2E 63 6F 6D
        vCell = vTable.OleFunction("Cell", i + 2, 1);
        vCell.OlePropertySet("Range", lv->Items->Item[i]-&


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 资溪县| 肥东县| 土默特左旗| 天门市| 特克斯县| 华阴市| 重庆市| 东乌珠穆沁旗| 株洲市| 栾城县| 柳江县| 宁乡县| 浦东新区| 尉犁县| 措美县| 凤冈县| 南华县| 潍坊市| 读书| 施甸县| 茂名市| 蒙城县| 吉木萨尔县| 和田市| 安图县| 海阳市| 十堰市| 丹巴县| 北安市| 凤冈县| 黄石市| 兴化市| 文山县| 连平县| 蒙阴县| 门头沟区| 铅山县| 宜兴市| 林口县| 上蔡县| 汨罗市|