【前言】先赞一个,这种变态的需求。
【原文】http://www.libxl.com/
LibXL is a library that can read and write Excel files. It doesn't require Microsoft Excel and combines an easy to use and powerful features. Library can be used to
LibXL can help your applications in exporting and extracting data to/from Excel files with minimum effort. Also it can be used ever as report engine. Library can be used in C, C++, C#, Delphi, Fortran and other languages. Supports Excel 97-2003 binary formats (xls) and Excel 2007/2010 xml formats (xlsx). Supports Unicode and 64-bit platforms. There are a wrapper for .NET developers and separate Mac and Linux edition.
LibXL has C/C++ headers, Delphi unit and .NET assembly for including in your project. No OLE automation.
LibXL supports numerous formatting options: alignments, borders, colors, fill patterns, fonts, merging cells and so on.
Writing speed is about 2 100 000 cells per second for numbers and 240 000 cells per second for 8-character random strings in binary format (CPU 3.2 GHz).
Our customers can use this library in theirs commercial applications without any fees.
#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(3, 1, 1000); } book->save(L"example.xls"); book->release(); } return 0; }
Book* book = xlCreateBook(); if(book) { if(book->load(L"example.xls")) { Sheet* sheet = book->getSheet(0); if(sheet) { const wchar_t* s = sheet->readStr(2, 1); if(s) wcout << s << endl; double d = sheet->readNum(3, 1); cout << d << endl; } } book->release(); }
Book* book = xlCreateBook(); if(book) { if(book->load(L"example.xls")) { Sheet* sheet = book->getSheet(0); if(sheet) { double d = sheet->readNum(3, 1); sheet->writeNum(3, 1, d * 2); sheet->writeStr(4, 1, L"new string"); } book->save(L"example.xls"); } book->release(); }
Font* font = book->addFont(); font->setName(L"Impact"); font->setSize(36); Format* format = book->addFormat(); format->setAlignH(ALIGNH_CENTER); format->setBorder(BORDERSTYLE_MEDIUMDASHDOTDOT); format->setBorderColor(COLOR_RED); format->setFont(font); Sheet* sheet = book->addSheet(L"Custom"); if(sheet) { sheet->writeStr(2, 1, L"Format", format); sheet->setCol(1, 1, 25); } book->save(L"format.xls");