用VC操作EXCEL


源程序:http://www.codeproject.com/KB/office/BasicExcel.aspx

Using the code

I should give a list of the functions in the three classes which you should know to use BasicExcel. This will be followed by a sample code.

class BasicExcel

void New(int sheets=3) Create a new Excel workbook with a given number of spreadsheets (Minimum 1).
bool Load(const char* filename) Load an Excel workbook from a file.
bool Save() Save current Excel workbook to opened file.
bool SaveAs(const char* filename) Save current Excel workbook to a file.
size_t GetTotalWorkSheets() Total number of Excel worksheets in current Excel workbook.
BasicExcelWorksheet* GetWorksheet(size_t sheetIndex) Get a pointer to an Excel worksheet at the given index. Index starts from 0. Returns 0if index is invalid.
BasicExcelWorksheet* GetWorksheet(const char* name) Get a pointer to an Excel worksheet that has given ANSI name. Returns if there is no Excel worksheet with the given name.
BasicExcelWorksheet* GetWorksheet(constwchar_t* name) Get a pointer to an Excel worksheet that has given Unicode name. Returns if there is no Excel worksheet with the given name.
BasicExcelWorksheet* AddWorksheet(intsheetIndex=-1) Add a new Excel worksheet to the given index. Name given to worksheet is SheetX, where X is a number which starts from 1. Index starts from 0. Worksheet is added to the last position if sheetIndex == -1. Returns a pointer to the worksheet if successful,if otherwise.
BasicExcelWorksheet* AddWorksheet(const char* name, int sheetIndex=-1) Add a new Excel worksheet with given ANSI name to the given index. Index starts from0. Worksheet is added to the last position if sheetIndex == -1. Returns a pointer to the worksheet if successful, 0 if otherwise.
BasicExcelWorksheet* AddWorksheet(constwchar_t* name, intsheetIndex=-1) Add a new Excel worksheet with given Unicode name to the given index. Index starts from 0. Worksheet is added to the last position if sheetIndex == -1. Returns a pointer to the worksheet if successful, 0 if otherwise.
boolDeleteWorksheet(size_t sheetIndex) Delete an Excel worksheet at the given index. Index starts from 0. Returns true if successful, false if otherwise.
bool DeleteWorksheet(constchar* name) Delete an Excel worksheet that has given ANSI name. Returns true if successful,false if otherwise.
bool DeleteWorksheet(constwchar_t* name) Delete an Excel worksheet that has given Unicode name. Returns true if successful,false if otherwise.
char* GetAnsiSheetName(size_t sheetIndex) Get the worksheet name at the given index. Index starts from 0. Returns 0 if name is in Unicode format.
wchar_t* GetUnicodeSheetName(size_t sheetIndex) Get the worksheet name at the given index. Index starts from 0. Returns 0 if name is in ANSI format.
bool GetSheetName(size_t sheetIndex, char* name) Get the worksheet name at the given index. Index starts from 0. Returns false if name is in Unicode format.
bool GetSheetName(size_t sheetIndex, wchar_t* name) Get the worksheet name at the given index. Index starts from 0. Returns false if name is in ANSI format.
boolRenameWorksheet(size_t sheetIndex, const char* to) Rename an Excel worksheet at the given index to the given ANSI name. Index starts from 0. Returns true if successful, false if otherwise.
boolRenameWorksheet(size_t sheetIndex, const wchar_t* to) Rename an Excel worksheet at the given index to the given Unicode name. Index starts from 0. Returns true if successful, false if otherwise.
bool RenameWorksheet(constchar* from, const char* to) Rename an Excel worksheet that has given ANSI name to another ANSI name. Returns true if successful, false if otherwise.
bool RenameWorksheet(constwchar_t* from, constwchar_t* to) Rename an Excel worksheet that has given Unicode name to another Unicode name. Returns true if successful, false if otherwise.

class BasicExcelWorksheet

char* GetAnsiSheetName() Get the current worksheet name. Returns 0 if name is in Unicode format.
wchar_t* GetUnicodeSheetName() Get the current worksheet name. Returns 0 if name is in ANSI format.
bool GetSheetName(char* name) Get the current worksheet name. Returns false if name is in Unicode format.
boolGetSheetName(wchar_t* name) Get the current worksheet name. Returns false if name is in ANSI format.
bool Rename(const char* to) Rename current Excel worksheet to another ANSI name. Returns true if successful,false if otherwise.
bool Rename(constwchar_t* to) Rename current Excel worksheet to another Unicode name. Returns true if successful, false if otherwise.
void Print(ostream& os,char delimiter=',', chartextQualifier='\0') Print entire worksheet to an output stream, separating each column with the defined delimiter and enclosing text using the defined textQualifier. Leave out thetextQualifier argument if do not wish to have any text qualifiers.
size_t GetTotalRows() Total number of rows in current Excel worksheet.
size_t GetTotalCols() Total number of columns in current Excel worksheet.
BasicExcelCell* Cell(size_t row, size_t col) Return a pointer to an Excel cell. row and col starts from 0. Returns if row exceeds 65535 or col exceeds 255.
bool EraseCell(size_t row, size_t col) Erase content of a cell. row and col starts from 0. Returns true if successful, false if row or col exceeds range.

class BasicExcelCell

int Type() const Get type of value stored in current Excel cell. Returns one of the following enums: UNDEFINEDINTDOUBLESTRINGWSTRING.
bool Get(int& val) const Get an integer value. Returns false if cell does not contain an integer.
bool Get(double& val) const Get a double value. Returns false if cell does not contain a double.
bool Get(char* str) const Get an ANSI string. Returns false if cell does not contain an ANSI string.
bool Get(wchar_t* str) const Get an Unicode string. Returns false if cell does not contain an Unicodestring.
size_t GetStringLength() Return length of ANSI or Unicode string (excluding null character).
int GetInteger() const Get an integer value. Returns 0 if cell does not contain an integer.
double GetDouble() const Get a double value. Returns 0.<code>0 if cell does not contain a double.
const char* GetString() const Get an ANSI string. Returns 0 if cell does not contain an ANSI string.
const wchar_t* GetWString() const Get an Unicode string. Returns 0 if cell does not contain an Unicodestring.
ostream& operator<<(ostream& os,const BasicExcelCell& cell) Print cell to output stream. Print a null character if cell is undefined.
void Set(int val) Set content of current Excel cell to an integer.
void Set(double val) Set content of current Excel cell to a double.
void Set(const char* str) Set content of current Excel cell to an ANSI string.
void Set(const wchar_t* str) Set content of current Excel cell to an Unicode string.
void SetInteger(int val) Set content of current Excel cell to an integer.
void SetDouble(double val) Set content of current Excel cell to a double.
void SetString(const char* str) Set content of current Excel cell to an ANSI string.
void SetWString(const wchar_t* str) Set content of current Excel cell to an Unicode string.
void EraseContents() Erase the content of current Excel cell. Set type to UNDEFINED.

用VC操作EXCEL - 蓝色火焰 - 水木博客  Collapse 用VC操作EXCEL - 蓝色火焰 - 水木博客  Copy Code
#include "BasicExcel.hpp"  using namespace YExcel;    int main(int argc, char* argv[])  {    BasicExcel e;      // Load a workbook with one sheet, display its contents and    // save into another file.    e.Load("example1.xls");    BasicExcelWorksheet* sheet1 = e.GetWorksheet("Sheet1");    if (sheet1)    {      size_t maxRows = sheet1->GetTotalRows();      size_t maxCols = sheet1->GetTotalCols();      cout << "Dimension of " << sheet1->GetAnsiSheetName() <<          " (" << maxRows << ", " << maxCols << ")" << endl;        printf(" ");      for (size_t c=0; c<maxCols; ++c) printf("%10d", c+1);      cout << endl;        for (size_t r=0; r<maxRows; ++r)      {        printf("%10d", r+1);        for (size_t c=0; c<maxCols; ++c)        {          BasicExcelCell* cell = sheet1->Cell(r,c);          switch (cell->Type())          {            case BasicExcelCell::UNDEFINED:              printf(" ");              break;              case BasicExcelCell::INT:              printf("%10d", cell->GetInteger());              break;              case BasicExcelCell::DOUBLE:              printf("%10.6lf", cell->GetDouble());              break;              case BasicExcelCell::STRING:              printf("%10s", cell->GetString());              break;              case BasicExcelCell::WSTRING:              wprintf(L"%10s", cell->GetWString());
//中文处理如下:
    wchar_t *pUnicode = const_cast<wchar_t*>(cell->GetWString());
            size_t len = wcslen(pUnicode);
          char *buf = new char[2*len+1];
          memset(buf,0,2*len+1);
          WideCharToMultiByte(CP_ACP,0,pUnicode,-1,buf,2*len+1,NULL,NULL);   
    printf("%10s",buf);
          delete [] buf;              break;          }        }        cout << endl;      }    }    cout << endl;    e.SaveAs("example2.xls");      // Create a new workbook with 2 worksheets and write some contents.    e.New(2);    e.RenameWorksheet("Sheet1", "Test1");    BasicExcelWorksheet* sheet = e.GetWorksheet("Test1");    BasicExcelCell* cell;    if (sheet)    {      for (size_t c=0; c<4; ++c)      {        cell = sheet->Cell(0,c);        cell->Set((int)c);      }        cell = sheet->Cell(1,3);      cell->SetDouble(3.141592654);        sheet->Cell(1,4)->SetString("Test str1");      sheet->Cell(2,0)->SetString("Test str2");      sheet->Cell(2,5)->SetWString(L"中文");        sheet->Cell(4,0)->SetDouble(1.1);      sheet->Cell(4,1)->SetDouble(2.2);      sheet->Cell(4,2)->SetDouble(3.3);      sheet->Cell(4,3)->SetDouble(4.4);      sheet->Cell(4,4)->SetDouble(5.5);        sheet->Cell(4,4)->EraseContents();    }      sheet = e.AddWorksheet("Test2", 1);    sheet = e.GetWorksheet(1);    if (sheet)    {      sheet->Cell(1,1)->SetDouble(1.1);      sheet->Cell(2,2)->SetDouble(2.2);      sheet->Cell(3,3)->SetDouble(3.3);      sheet->Cell(4,4)->SetDouble(4.4);      sheet->Cell(70,2)->SetDouble(5.5);    }    e.SaveAs("example3.xls");      // Load the newly created sheet and display its contents    e.Load("example3.xls");      size_t maxSheets = e.GetTotalWorkSheets();    cout << "Total number of worksheets: " << e.GetTotalWorkSheets() << endl;    for (size_t i=0; i<maxSheets; ++i)    {      BasicExcelWorksheet* sheet = e.GetWorksheet(i);      if (sheet)      {        size_t maxRows = sheet->GetTotalRows();        size_t maxCols = sheet->GetTotalCols();        cout << "Dimension of " << sheet->GetAnsiSheetName() <<           " (" << maxRows << ", " << maxCols << ")" << endl;          if (maxRows>0)        {          printf(" ");          for (size_t c=0; c<maxCols; ++c) printf("%10d", c+1);          cout << endl;        }          for (size_t r=0; r<maxRows; ++r)        {          printf("%10d", r+1);          for (size_t c=0; c<maxCols; ++c)          {            cout << setw(10) << *(sheet->Cell(r,c));          // Another way of printing a cell content.          }          cout << endl;        }        if (i==0)        {          ofstream f("example4.csv");          sheet->Print(f, ',', '\"'); // Save the first sheet as a CSV file.          f.close();        }      }      cout << endl;    }    return 0;  }  

你可能感兴趣的:(String,Excel,delete,character,printing,enums)