程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> BCB版 Excel操作類 待完善

BCB版 Excel操作類 待完善

編輯:C++入門知識

[cpp]
#ifndef EXCEL_OP_H  
#define EXCEL_OP_H  
#include <vcl.h>  
class ExcelOp 

  Variant s_vExcelApp,s_vSheet; 
  bool s_bOpen; 
  int s_nRowCount,s_nColCount; 
protected: 
  Variant GetCell(int row,int col) 
  { 
    if(s_bOpen) 
    { 
      return s_vSheet.OlePropertyGet("Cells",row,col).OlePropertyGet("Value"); 
    } 
    return Null; 
  } 
  void SetCell(int row,int col,Variant &var) 
  { 
    if(!s_bOpen) 
    { 
      return ; 
    } 
    String temp=var; 
    s_vSheet.OlePropertyGet("Cells",row,col).OlePropertySet("Value",temp.c_str()); 
  } 
  int GetRowCount() 
  { 
     if(!s_bOpen) 
     return 0; 
     int i=1; 
     String strValue=Cells[i][1]; 
 
     if(!strValue.IsEmpty()) 
     { 
       do 
       { 
         strValue=Cells[++i][1]; 
       }while(!strValue.IsEmpty()); 
       --i; 
     } 
     s_nRowCount=i; 
     return s_nRowCount; 
  } 
  int GetColCount() 
  { 
     if(!s_bOpen) 
     return 0; 
     int i=1; 
     String strValue=Cells[1][i]; 
     if(!strValue.IsEmpty()) 
     { 
       do 
       { 
         strValue=Cells[1][++i]; 
       }while(!strValue.IsEmpty()); 
       --i; 
     } 
     s_nColCount=i; 
     return s_nColCount; 
  } 
public: 
  const enum Op 
  { 
     Create_Op, 
     Load_Op 
  }; 
 
   
  ExcelOp():s_vExcelApp(Null), 
            s_vSheet(Null), 
            s_bOpen(false), 
            s_nRowCount(0), 
            s_nColCount(0) 
  {} 
  ~ExcelOp() 
  { 
      try 
      { 
        s_vExcelApp.OleFunction("Quit"); 
        s_vSheet=Unassigned; 
        s_vExcelApp=Unassigned; 
      } 
      catch(...) 
      {} 
  } 
  void Close() 
  { 
    if(s_bOpen) 
    { 
      s_vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("Close"); 
      s_bOpen=false; 
    } 
  } 
  void Save() 
  { 
    if(s_bOpen) 
    { 
      s_vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("Save"); 
    } 
  } 
  void Save(const char* lpszFileName) 
  { 
    if(s_bOpen) 
    { 
      s_vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs",lpszFileName); 
    } 
  } 
  bool Open(const char* szFileName,const Op op) 
  { 
     if(op!=Create_Op) 
     { 
       if(!FileExists(szFileName)) 
       return false; 
     } 
     Close(); 
     do 
     { 
       try 
       { 
         s_vExcelApp=Variant::CreateObject("Excel.Application"); 
       } 
       catch(...) 
       { 
         Application->MessageBoxA("CreateObject出錯,請確認本機是否安裝了MS-EXCEL。","錯誤",MB_ICONINFORMATION); 
         break; 
       } 
 
       try 
       { 
         s_vExcelApp.OlePropertySet("Visible", false); 
         if(op==Load_Op) 
         { 
           s_vExcelApp.OlePropertyGet("Workbooks").OleProcedure("Open",szFileName); // 工作表  
           s_vSheet=s_vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("ActiveSheet"); 
         } 
         else if(op==Create_Op) 
         { 
           s_vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1); // 工作表  
           s_vSheet=s_vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1); 
         } 
       } 
       catch(...)  www.2cto.com
       { 
         break; 
       } 
       s_bOpen=true; 
     }while(0); 
     return s_bOpen; 
  } 
  __property Variant Cells[int row][int col]={read=GetCell,write=SetCell}; 
  __property int RowCount={read=GetRowCount}; 
  __property int ColCount={read=GetColCount}; 
}; 
#endif 
作者:qq752923276
 
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved