尝试:在linux下解析excel数据

来源:互联网 发布:vscode eclipse快捷键 编辑:程序博客网 时间:2024/05/29 13:48

【前言】先赞一个,这种变态的需求。

 

【原文】http://www.libxl.com/

 

Direct reading and writing Excel files

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

  • Generate a new spreadsheet from scratch
  • Extract data from an existing spreadsheet
  • Edit an existing spreadsheet

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.

Simple interoperate, no more Excel dependency

LibXL has C/C++ headers, Delphi unit and .NET assembly for including in your project. No OLE automation.

Customizing the look and feel

LibXL supports numerous formatting options: alignments, borders, colors, fill patterns, fonts, merging cells and so on.

High performance

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).

Royalty-free distribution with your application

Our customers can use this library in theirs commercial applications without any fees.

 

Code example: generate a new spreadsheet from scratch

#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;}

 

Code example: extract data from an existing spreadsheet

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();}

Code example: edit an existing spreadsheet

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();   }

Code example: apply formatting options

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");
 
原创粉丝点击