OpenSource——BasicExcel

前言:

       一年前在學數據庫的時候,有個想法,就是怎麼用代碼來讀取excel的數據;爲此,我曾請教Boss Liu,Boss Liu指點說OpenSource裏有我要的東西。由於一些小事情,耽擱了,結果這個想法就over了;沒想到,現在我需要用上;既然如此,那我得好好學學。在此我要感謝Boss Liu的指導,否則對於這問題,我估計現在也不知道怎麼解決;

正題:

BasicExcel

        1.設計者:新加坡人Yap Chun Wei;

       2.基本的功能(對excel裏的sheet進行的操作):

                1)Read and write number (integers, real numbers) and strings (ANSI, UTF16)

                2)Add worksheets

                3)Rename worksheets

                4)Delete worksheets

                5)Get the name of a worksheet

       3.優點:

                   1)採用com方式實現,訪問速度快,api接口也比較簡單

             2)可以跨平臺使用

       4.一些操作(讀取操作)的具體實現

       1)prepare:

       下載BasicExcel;說明:該包裏面有四個文件,由於演示程序不是沒用MFC,所以只需要將BasicExcel.hpp與BasicExcel.cpp放在你建的工程下面,或者可以將四個文件都放在你自己的類庫中,然後導入;

       使用的excel的名字:classification.data.xls

      sheet的名字analysis.data

        2)show:

#include "BasicExcel.hpp"
// Load a workbook with one sheet, display its contents
int main(int argc, char* argv[])
{
	BasicExcel e;
	// load excel
	e.Load("classification.data.xls");

	BasicExcelWorksheet* sheet = e.GetWorksheet("analysis.data");
	if (sheet){
		size_t maxRows = sheet->GetTotalRows();
		size_t maxCols = sheet->GetTotalCols();
		cout << "Dimension of " << sheet->GetAnsiSheetName() <<
			" (" << maxRows << ", " << maxCols << ")" << endl;

		for (size_t r = 0; r < maxRows; ++r){
		   printf("%10d", r+1);
		   for (size_t c = 0; c < maxCols; ++c){
				BasicExcelCell* cell = sheet->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());
					break;
				}
		   }
		  cout << endl;
		}
	}else{
		printf("cannot read this sheet!\n");
	}
	cout << endl;
 
  return 0;
}
#include "BasicExcel.hpp"
// Create a new workbook and write some contents.
int main(int argc, char* argv[])
{
	BasicExcel e;
	// create a workbook
	e.New();
	// create a sheet
	BasicExcelWorksheet* sheet = e.AddWorksheet("analysis.data");
	// cell
	BasicExcelCell* cell;
	
	if (sheet){
		size_t c;
		// SetString
		for (c = 0; c < 4; ++c){
		   cell = sheet->Cell(0, c);
		   cell->SetString("property");
		   // sheet->Cell(0,c)->SetInteger("property");
		}
        // SetInteger
		for (c = 0; c < 4; ++c){
		   cell = sheet->Cell(1, c);
		   cell->SetInteger(c);
		   // sheet->Cell(1,c)->SetInteger(c);
		}
		// SetDouble
		for (c = 0; c < 4; ++c){
		   cell = sheet->Cell(2, c);
		   double data = c / 2.0;
		   cell->SetDouble(data);
		   // sheet->Cell(2,c)->SetDouble(data);
		}
	}
	// save to a excel
	e.SaveAs("classification.data.xls");

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