`

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;
}
分享到:
评论
2 楼 zjlinkpro 2011-05-19  
ray_linn 写道
----我还以为是写了个Execl呢....

用MS的Office SDK不就得了。

首先,我很感谢你给我回复,指出我文章的问题!同时,我也很遗憾我的文章让你失望了;接下来,我谈谈我的看法:
一,由于小弟暂时在这方面学的不是很深,尤其对底层的一些API不是很了解;
二,由于上次为完成某项相关的任务,时间比较紧,所以想到了使用BasicExcel;可能BasicExcel的功能不是很强大,但是我觉得如果想在短期内完成任务,这个可能是一种比较好的选择;当然如果想深入研究下去,你的建议是不错的。在不同的阶段,我想不应该总是选最好的,而应该选合适自己的!
三,有时间,我会深入研究下去的。到时希望仁兄能指点迷津!
谢谢!
1 楼 ray_linn 2011-05-18  
----我还以为是写了个Execl呢....

用MS的Office SDK不就得了。

相关推荐

    纯C++使用BasicExcel来读写excel文件

    “纯C++使用BasicExcel来读写excel文件”这一主题,意味着我们将探讨如何利用C++语言,借助BasicExcel库来实现对Excel文件的操作。下面将详细介绍如何进行这些操作,并提供一些相关知识点。 首先,我们需要理解...

    qt-opensource-windows

    opensource-windows-x86-winrt-msvc2015-5.8.0.exe 20-Jan-2017 12:54 1.2G Details qt-opensource-windows-x86-winrt-msvc2013-5.8.0.exe 20-Jan-2017 12:53 1.2G Details qt-opensource-windows-x86-msvc2015_64...

    BasicExcel_syllable62t_读取excel_basicexcel_

    在这个主题"BasicExcel_syllable62t_读取excel_basicexcel_"中,我们将探讨如何在C++环境下编写程序来读取Excel文件。 首先,由于C++标准库并不直接支持读取Excel文件,我们需要引入第三方库。一个常用的库是`libxl...

    qt-opensource-linux-x64-5.12.12.zip

    qt-opensource-linux-x64-5.12.12.zip Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command ...

    qt-windows-opensource

    qt-windows-opensource

    qt-opensource-windows-x86-vs2008-4.8.7

    qt-opensource-windows-x86-vs2008-4.8.7

    qt-opensource-linux-x64-5.9.0.run

    qt-opensource-linux-x64-5.9.0.run

    qt-everywhere-opensource-src-4.8.7.7z

    "qt-everywhere-opensource-src-4.8.7.7z" 是一个包含QT库开源源代码的压缩文件,版本为4.8.7,格式为7z。这个版本可能在发布时是最稳定和广泛使用的,对于学习、研究或者定制QT库的开发者来说非常有价值。 首先,...

    qt-opensource-linux-x64-5.8.0.run.zip

    "qt-opensource-linux-x64-5.8.0.run.zip"是针对64位Linux系统的一个Qt 5.8.0版本的安装包,其包含的"qt-opensource-linux-x64-5.8.0.run"文件是安装程序,便于在Linux环境下进行安装。 Qt 5.8.0是一个重要的版本,...

    qt-opensource-windows-x86-5.13.2.exe

    qt-opensource-windows-x86-5.13.2.exe

    qt-opensource-windows-x86-msvc2012-5.6.3.exe

    qt-opensource-windows-x86-msvc2012-5.6.3 这个是在vs2012中的使用的qt 编绎时使用的命令: configure -prefix d:\win32-msvc2012 -platform win32-msvc2012 -opensource -confirm-license -nomake tests -nomake ...

    qt-opensource-linux-x64-5.4.1

    qt-opensource-linux-x64-5.4.1

    QT CREATORqt-opensource-linux-x64-5.7.1.run

    qt-opensource-linux-x64-5.7.1.run已验证可用,请放心下载。Qt是诺基亚公司的C++可视化开发平台。与Visual C++相比,Qt简单方便、功能完善、跨平台、扩展能力强,可以用于嵌入式开发qt-opensource-linux-x64-5.7.1....

    qt-opensource-linux-x64-5.6.2.run

    qt-opensource-linux-x64-5.6.2.run

    Qt qt-opensource-windows-x86-5.11.0安装包

    Qt qt-opensource-windows-x86-5.11.0安装包,适用于开发openCV、QtAndroid

    qt-opensource-linux-x64-5.9.1.rar

    QT开源包"qt-opensource-linux-x64-5.9.1.rar"是针对Linux操作系统,特别是中标麒麟和Ubuntu发行版的一个软件开发工具包。QT是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面(GUI)和其他类型的软件。这...

    qt-win-opensource-4.8.4-mingw.exe.7z.001

    qt-win-opensource-4.8.4-mingw.exe.7z.001

    qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe.7z

    对于"qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe"这个可执行文件,由于其名称中包含"opensource",表明它是使用GPL许可证的开源版本,允许用户自由使用、修改和分发源代码。 3. Windows平台: 此可执行...

    qt-opensource-linux-x64-5.12.12.run

    qt-opensource-linux-x64-5.12.12.run Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command ...

Global site tag (gtag.js) - Google Analytics