青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-16  評論-116  文章-0  trackbacks-0
  Excel在公司用的很多,而這個東西我用的不是很好,就想用程序來處理,遇到很多錯誤。這幾天研究了下OLE操作Excel。
環境:VS2008 SP1+Excel 2007

加入OLE Type Library
隨便建立一個MFC程序,選添加類,Typelib中的MFC類,出來一個對話,可用類型庫選“Microsoft Excel 12.0 Object Library”
一般來說,添加下邊這些類就夠了,當然也可以全部添加
CApplication
CWorkbook
CWorkbooks
CWorksheet
CRange
CWorksheets
CPicture
CPictures
CBorder
CBorders
CFont0
Cnterior

包含頭文件的時候,把CApplication.h放到最前面

一個操作的例子
#define VT(x) _variant_t(x)


void
 CExcelTest2Dlg::OnBnClickedButton1()
{
    CApplication m_appExcel;       
// Excel應用程序
    CWorkbooks m_books;
    CWorkbook m_book;
    CWorksheets sheets; 
    CWorksheet sheet;
    CRange range;          
//選擇范圍
    Cnterior interior; 
    CFont0 font;               
// 字體
    CBorders borders;         // 邊框
    CBorder border;
    CRange column;
    CRange row;
    
// 初始化Com
    if (::CoInitialize( NULL ) == E_INVALIDARG)
    
{
        MessageBox(
"初始化Com失敗!");
    }


    
// 啟動Excel
    if ( !m_appExcel.CreateDispatch(_T("Excel.Application"), NULL))
    
{
        MessageBox(_T(
"創建Excel失敗!"));
        ::CoUninitialize();
    }

    COleVariant covOptional((
long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    m_appExcel.put_Visible(TRUE);
    m_books.AttachDispatch(m_appExcel.get_Workbooks()); 
    m_book.AttachDispatch(m_books.Add(covOptional));
    sheets.AttachDispatch(m_book.get_Worksheets()); 
//得到Worksheets 
    sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1"))); //得到sheet1 
    sheet.put_Name("1234"); //sheet1改名
    

    
//所有單元格顏色設為白色
    range.AttachDispatch(sheet.get_Cells()); 
    interior.AttachDispatch(range.get_Interior());
    interior.put_Color(VT(RGB(
255255255)));
    interior.ReleaseDispatch();

    range.ClearContents();
    range.ReleaseDispatch();

    range.AttachDispatch(sheet.get_Range(VT(
"A1"), VT("C1001")));
    range.ClearFormats();
    
//插入數據
    range.put_Item(VT(1), VT(1), VT("函數"));
    range.put_Item(VT(
1), VT(2), VT("大項目"));
    range.put_Item(VT(
1), VT(3), VT("小項目"));
    
for (int i = 2; i < 1000; i++)
    
{
        range.put_Item(VT(i), VT(
2), VT(i - 1));
        range.put_Item(VT(i), VT(
3), VT("37122368~37097735~"));
    }

    
    
// 為四周和內部加上邊框
    borders.AttachDispatch(range.get_Borders());
    
for (long i = xlEdgeLeft; i <= xlInsideHorizontal; i++)
    
{
        border 
= borders.get_Item(i);
        border.put_LineStyle(VT(xlContinuous));
        border.ReleaseDispatch();
    }

    borders.ReleaseDispatch();

    
//調整列寬
    column = range.get_EntireColumn();
    column.put_ColumnWidth(VT(
18.63));
    column.ReleaseDispatch();
    range.ReleaseDispatch();

    range.AttachDispatch(sheet.get_Range(VT(
"A10"), VT("A20"))); //選中
    range.Merge(VT(0)); //合并單元格
    range.ReleaseDispatch();

    range.AttachDispatch(sheet.get_Range(VT(
"A1"), VT("C1")));
    interior.AttachDispatch(range.get_Interior());
    interior.put_ColorIndex(VT(
7));
    interior.put_Pattern(VT(xlPatternSolid));
    interior.ReleaseDispatch();

    font.AttachDispatch(range.get_Font());
    font.put_ColorIndex(VT(
6));
    font.get_Bold();
    font.ReleaseDispatch();
    range.ReleaseDispatch();

    range.AttachDispatch(sheet.get_Range(VT(
"A2"), VT("C1001")));  //設置range對象的范圍
    interior.AttachDispatch(range.get_Interior());  //選擇表格內部
    interior.put_ColorIndex(VT(13));   //顏色
    interior.put_Pattern(VT(xlPatternSolid));  //加粗
    interior.ReleaseDispatch();

    font.AttachDispatch(range.get_Font());  
//選擇字
    font.put_ColorIndex(VT(3));  //設置字顏色
    font.ReleaseDispatch();
    
    row.AttachDispatch(range.get_EntireRow()); 
//選擇range里的全部行
    row.put_RowHeight(VT(24));  //行高
    row.ReleaseDispatch();
    range.ReleaseDispatch();

    sheet.ReleaseDispatch();
    sheets.ReleaseDispatch();
    m_book.ReleaseDispatch(); 
    m_books.ReleaseDispatch();
    m_appExcel.ReleaseDispatch();

    
}

接下來開始編譯,哇,一大堆錯誤...

e:\myprograms3\exceltest2\exceltest2\debug\excel.tlh(1461) : error C2371: “FontPtr”: 重定義;不同的基類型   等等
把CApplication.h里的#import "C:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE" no_namespace
改為#import "C:\Program Files\Microsoft Office\OFFICE12\excel.exe" exclude("IFont", "IPicture") rename("RGB", "ignorethis"), rename("DialogBox", "ignorethis"), rename("VBE", "GREATWSVBE")

rebuild all
e:\myprograms3\exceltest2\exceltest2\debug\excel.tlh(2036) : error C2504: “_IMsoDispObj”: 未定義基類
應該是接口沒定義,mso.dll這個接口,在CApplication.h最上面加入#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\mso.dll"

rebuild all  錯誤少多了
還有VBE之類的錯誤,改法:
加入
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" raw_interfaces_only, rename("Reference", "ignorethis"), rename("VBE", "GREATWSVBE")

注意自己機器的路徑!
剩下還有一些rename 的警告,可以在相關import后面幾上rename("XXX","XXXXX")


本人也是初學OLE操作excel,希望能和大家一起討論。





posted on 2008-09-21 23:01 greatws 閱讀(10279) 評論(4)  編輯 收藏 引用

評論:
# re: OLE操作Excel編譯錯誤處理[未登錄] 2008-09-21 23:26 | fangfang
居然搶到沙發了 耶~
ps:我覺得樓主很厲害~很有才~  回復  更多評論
  
# re: OLE操作Excel編譯錯誤處理 2008-09-25 20:52 | Kven
= ="
樓主太厲害了~本人沒有那么強  回復  更多評論
  
# re: OLE操作Excel編譯錯誤處理 2011-01-22 23:23 | VC初學者
萬分感謝  回復  更多評論
  
# re: OLE操作Excel編譯錯誤處理 2013-12-02 09:46 | bluechen
樓主動手能力很強啊  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利视频二区| 欧美风情在线| 亚洲影音先锋| 久久精品人人做人人爽| 国产精品久久久久av免费| 亚洲欧美日韩国产成人精品影院| 亚洲欧美中文另类| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲欧美在线免费观看| 日韩一级免费| 久久综合狠狠综合久久激情| 国产精品无人区| aa国产精品| 欧美成人免费全部观看天天性色| 亚洲一区欧美激情| 久久精品99国产精品| 久久人人九九| 一色屋精品视频免费看| 欧美在线亚洲| 亚洲一区二区欧美日韩| 欧美四级在线| 在线亚洲伦理| 亚洲久久一区| 国产精品高潮呻吟视频| 亚洲视频精选在线| 亚洲精品男同| 欧美日韩国产va另类| 亚洲精品久久久久久久久久久| 久久亚洲一区二区三区四区| 欧美一级大片在线免费观看| 国产精品一区二区欧美| 亚洲欧洲av一区二区三区久久| 激情综合色综合久久| 久久久五月婷婷| 欧美专区中文字幕| 国产在线日韩| 亚洲国产精品成人一区二区| 欧美 日韩 国产一区二区在线视频| 在线播放中文字幕一区| 亚洲国产欧美一区二区三区同亚洲| 麻豆国产精品va在线观看不卡| 精品动漫一区| 亚洲精品一区二| 欧美色播在线播放| 亚洲欧美www| 久久精品亚洲精品| 亚洲人体偷拍| 99综合视频| 在线播放一区| 亚洲精品一区二区网址| 欧美日韩一区在线| 久久影院午夜片一区| 久久婷婷亚洲| 99re热这里只有精品免费视频| 欧美一区二区三区成人| 久久国产精品网站| 亚洲精品欧美一区二区三区| 亚洲欧美日韩在线一区| 亚洲电影成人| 激情视频一区二区| 亚洲美女毛片| 国产在线麻豆精品观看| 亚洲区中文字幕| 国产日韩精品在线播放| 日韩视频第一页| 日韩亚洲欧美中文三级| 欧美三级在线视频| 久久免费精品视频| 欧美午夜不卡在线观看免费 | 久久精品一本| 欧美人牲a欧美精品| 亚洲视频在线免费观看| 亚洲在线日韩| 宅男精品导航| 久久久国产一区二区三区| 亚洲欧洲另类国产综合| 久久福利资源站| 亚洲影音一区| 麻豆精品在线观看| 久久久久国内| 欧美另类变人与禽xxxxx| 久久精品官网| 欧美日韩在线观看一区二区三区| 欧美成人a∨高清免费观看| 欧美视频二区36p| 免费一级欧美片在线播放| 国产伦精品一区二区三区在线观看| 狼人天天伊人久久| 国产精品久久久久久久久久直播| 亚洲精品看片| 亚洲国产成人精品视频| 亚洲人成网在线播放| 国产精品私房写真福利视频| 亚洲人成啪啪网站| 亚洲福利视频一区二区| 亚洲一区二区精品| 亚洲精品永久免费| 久久免费精品日本久久中文字幕| 亚洲伊人观看| 裸体歌舞表演一区二区| 欧美全黄视频| 亚洲福利免费| 亚洲激情在线播放| 久久久www| 久久久久国内| 国模套图日韩精品一区二区| 久久亚洲一区二区三区四区| 免费国产一区二区| 在线成人h网| 久久久伊人欧美| 久久亚洲色图| 在线免费观看日本一区| 亚洲女人天堂成人av在线| 欧美一区激情视频在线观看| 在线成人av.com| 久久中文字幕一区| 欧美华人在线视频| 欧美日韩午夜剧场| 亚洲视频一二| 亚洲人人精品| 欧美日韩亚洲国产精品| 亚洲欧洲免费视频| 欧美国产精品一区| 91久久精品网| 欧美视频成人| 久久综合久久综合久久| 亚洲一区二区三区在线视频| 一区二区三区高清在线观看| 亚洲人成在线播放网站岛国| 亚洲精品一区二区三| 欧美日韩精品系列| 欧美日韩一区二区三区在线视频| 一本色道久久加勒比精品| 在线视频欧美日韩精品| 久久久久久久综合色一本| 亚洲国产欧美不卡在线观看| 精品成人国产| 欧美gay视频激情| 亚洲欧美www| 国产无遮挡一区二区三区毛片日本| 欧美亚洲一区二区三区| 亚洲自拍偷拍福利| 欧美激情国产精品| 亚洲性图久久| 亚洲视频在线观看免费| 黄色亚洲在线| 久久久久久国产精品一区| 久久久久一区二区| 女人色偷偷aa久久天堂| 中日韩美女免费视频网站在线观看| 美女网站久久| 香蕉成人伊视频在线观看| 国产精品久久国产精品99gif | 一区二区三区视频观看| 久久精品一区四区| 亚洲欧美视频| 亚洲国产专区校园欧美| 黄色工厂这里只有精品| 欧美精品首页| 久久成人在线| 亚洲免费精彩视频| 亚洲人成网站在线观看播放| 久久国产毛片| 久久www成人_看片免费不卡| 性高湖久久久久久久久| 激情五月综合色婷婷一区二区| 国产精品外国| 欧美麻豆久久久久久中文| 久久综合中文| 亚洲伊人一本大道中文字幕| 一区二区三区福利| 91久久极品少妇xxxxⅹ软件| 欧美黄色精品| 久久成人人人人精品欧| 午夜天堂精品久久久久| 国产精品系列在线| 欧美日韩一区视频| 亚洲欧美www| 99综合在线| 亚洲午夜精品网| 亚洲人成人一区二区三区| 亚洲精品免费在线| 欧美黑人在线播放| 91久久综合| 亚洲国产成人一区| 亚洲欧洲精品一区| 在线欧美日韩| 亚洲欧美在线磁力| 国产精品高潮呻吟久久av无限| 久久成人综合网| 国产精品视频网址| 欧美激情小视频| 国产亚洲精品久久久久婷婷瑜伽| 亚洲国产天堂久久国产91| 欧美日韩中文字幕在线| 99精品黄色片免费大全| 性色一区二区| 久久精品视频免费播放| 欧美国产一区视频在线观看| 99国产精品久久久久老师|