VC++中調用EXCEL方法

我是調用EXCEL2003的基礎上寫的代碼,事後發現2007和2010版都可以兼容,微軟的程序接口在更新軟件時沒有改變還是很值得表揚的

Range類操作集合

  1. range =sheet.GetRange(COleVariant("A1"), COleVariant("D1"));    // 獲得A1:D1的Range  
  2.   
  3. range =sheet.GetRange(COleVariant("D2"),covOptional);                //獲得D2 Range  
  4.   
  5. range =range.GetResize(COleVariant((long)NUMROWS), COleVariant((long)1)); //重新設置D2的大小  
  6. range.SetFormula(COleVariant("=C2*0.07"));                         // 給D2:D21設置公式  
  7.   
  8. range.AutoFit();                                                                           //自動適合尺寸  

oFont =range.GetFont();                                                             // 獲得Range的字體

Font類操作集合

  1. oFont.SetBold(COleVariant((short)TRUE));                                   //設置是否粗體  
  2. oFont.SetColor(COleVariant((long)RGB(255, 0,0)));                    // 設置字體顏色  
  3.   
  4. oFont.SetName(COleVariant("黑體"));                                      // 設置字體類型<span style="color:#333333;BACKGROUND: white"> </span>  
  1. range  = sheet.GetRange(COleVariant("A1"),covOptional);  //獲取A1 Range  
  2. range.SetValue2(COleVariant("Date"));                              // 添加數據  
  1. range = sheet.GetRange(COleVariant("A1"),COleVariant("D1"));    //獲得A1:D1的Range  
  2.   
  3. oFont =range.GetFont();                                                             // 獲得Range的字體  
  4. oFont.SetBold(COleVariant((short)TRUE));                                   // 設置是否粗體  
  5. oFont.SetColor(COleVariant((long)RGB(255, 0, 0)));                    // 設置字體顏色  
  6.   
  7. oFont.SetName(COleVariant("黑體"));                                      // 設置字體類型  
  8.   
  9. range =range.GetEntireColumn();                                               //獲得全部的單元格  
  10. range.AutoFit();                                                                           //自動適合尺寸   

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 // 向單元格中添加公式

  1. range= sheet.GetRange(COleVariant("D2"),covOptional);      //獲得D2 Range  
  1. range = range.GetResize(COleVariant((long)NUMROWS),COleVariant((long)1)); // 重新設置D2的大小  
  2. range.SetFormula(COleVariant("=C2*0.07"));                        // 給D2:D21設置公式  


3合併單元格

      //思路:1.先獲取A1:C1的Range範圍,然後重新定義此範圍,最後合併
      //         2.直接獲得A1:C2的Range範圍,直接合並。結果和第一種方法一樣
       

  1.  Range unionRange;  
  2. unionRange =sheet.GetRange(COleVariant("A1"), COleVariant("C1"));   
  3. vResult = unionRange.GetMergeCells();  
  4. unionRange =unionRange.GetResize(COleVariant((long)2), COleVariant((long)3));  
  5. unionRange.Merge(COleVariant((long)0));      //合併單元格  
  6. unionRange.SetRowHeight(COleVariant((short)30));   //設置單元格的高度  
  7. unionRange.SetHorizontalAlignment(COleVariant((long)-4108));// 水平居中對齊     


4、向單元格中插入圖片(支持BMPJPG格式,其他沒試)

  1. Shapes   shapes  =   sheet.GetShapes();       // 從Sheet對象上獲得一個Shapes      
  2. range   =sheet.GetRange(COleVariant("B16"),COleVariant("J22"));   // 獲得Range對象,用來插入圖片  
  3. rgMyRge1 = range;  
  4. shapes.AddPicture("D://Test1.jpg"  ,   false   ,   true   ,     
  5.                  (float)range .GetLeft().dblVal, (float)range .GetTop().dblVal,    //從本地添加一個圖片  
  6.                     (float)range .GetWidth().dblVal, (float)range .GetHeight().dblVal);  
  7. ShapeRange  sRange   =   shapes.GetRange(_variant_t(long(1)));  
  8. sRange.SetHeight(float(30));     
  9. sRange.SetWidth(float(30));    


5、將已建的.xls文件另存爲

  1. COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
  2.    book.SaveAs(COleVariant("D://3.xls"),covOptional,covOptional,  
  3.                                covOptional,covOptional,covOptional,0,  
  4.                                covOptional,covOptional,covOptional,covOptional,covOptional);   


6、關閉Excel服務

  1. COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
  2.     book.SetSaved(TRUE);     // 將Workbook的保存狀態設置爲已保存,即不讓系統提示是否人工保存  
  3.     range.ReleaseDispatch();    // 釋放Range對象  
  4.     sheet.ReleaseDispatch();    // 釋放Sheet對象  
  5.     sheets.ReleaseDispatch();    // 釋放Sheets對象  
  6.    
  7.     book.ReleaseDispatch();     // 釋放Workbook對象  
  8.     books.ReleaseDispatch();    // 釋放Workbooks對象  
  9.   
  10.     book.Close(covOptional, covOptional,covOptional);//關閉Workbook對象  
  11.     books.Close();           // 關閉Workbooks對象  
  12.     app.Quit();          // 退出_Application  
  13.    app.ReleaseDispatch();       // 釋放_Application  

//得到所有的列    

  1. rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);       


//得到第一列    

  1. rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);     

//打印預覽

  1. wbMyBook.SetSaved(true);   
  2. ExcelApp.SetVisible(true);   
  3. wbMyBook.PrintPreview(_variant_t(false));  

//調用模板中預先存放的宏

  1. ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,  
  2. vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,   
  3. vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,   
  4. vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,   
  5. vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);  

//設置1行1列的單元的值

  1. rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("ThisIs A Excel Test Program!"));  

//獲取總共有多少個SHEET

  1. sheets.get_Count();  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章