C++读写数据,一般通过txt文件,但是随着数据量的增大,采集数据时运用excel表格的优势得以逐步体现。本文主要介绍一下运用第三方库libxl,对excel表格数据进行读写。分为三个部分,第一部分是Visual Studio2010环境配置,第二部分是读操作,第三部分是写操作。
一、环境配置
1、下载第三方库libxl,网址是http://www.libxl.com/download.html
2、文件包含readme.txt,根据自己的系统对环境进行配置,我的是64位,采取的是Microsoft Visual C++配置。
二、读操作
#include <iostream>
#include <conio.h>
#include "libxl.h"
using namespace libxl;
int main()
{
Book* book = xlCreateBook();
if(book)
{
if(book->load(L"..\\generate\\example.xls"))
{
Sheet* sheet = book->getSheet(0);
if(sheet)
{
const wchar_t* s = sheet->readStr(2, 1);
if(s) std::wcout << s << std::endl << std::endl;
std::cout << sheet->readNum(4, 1) << std::endl;
std::cout << sheet->readNum(5, 1) << std::endl;
const wchar_t* f = sheet->readFormula(6, 1);
if(f) std::wcout << f << std::endl << std::endl;
int year, month, day;
book->dateUnpack(sheet->readNum(8, 1), &year, &month, &day);
std::cout << year << "-" << month << "-" << day << std::endl;
}
}
else
{
std::cout << "At first run generate !" << std::endl;
}
book->release();
}
std::cout << "\nPress any key to exit...";
_getch();
return 0;
}
三、写操作
#include <iostream>
#include <windows.h>
#include "libxl.h"
using namespace libxl;
int main()
{
Book* book = xlCreateBook();
if(book)
{
Sheet* sheet = book->addSheet(L"Sheet1");
if(sheet)
{
sheet->writeStr(2, 1, L"Hello, World !");
sheet->writeNum(4, 1, 1000);
sheet->writeNum(5, 1, 2000);
Font* font = book->addFont();
font->setColor(COLOR_RED);
font->setBold(true);
Format* boldFormat = book->addFormat();
boldFormat->setFont(font);
sheet->writeFormula(6, 1, L"SUM(B5:B6)", boldFormat);
Format* dateFormat = book->addFormat();
dateFormat->setNumFormat(NUMFORMAT_DATE);
sheet->writeNum(8, 1, book->datePack(2008, 4, 29), dateFormat);
sheet->setCol(1, 1, 12);
}
if(book->save(L"example.xls"))
{
::ShellExecute(NULL, L"open", L"example.xls", NULL, NULL, SW_SHOW);
}
else
{
std::cout << book->errorMessage() << std::endl;
}
book->release();
}
return 0;
}