LibXL庫使用詳解(篇一)

LibXL庫使用詳解(篇一)

LibXL可以不依賴EXCEL讀取XLS和XLSX文件。包括設置對齊方式、字體、顏色等格式。支持C, C++, C#,Python等語言。並且支持多個平臺windows、Linux、Mac等。下面僅介紹windows平臺,C++語言的使用。詳情可見官網介紹

1. 從官網下載libxl庫

  • 打開壓縮包後文件目錄如下:

dir1
* 重要文件介紹

  1. bin 32位 動態鏈接庫(需要將其放在可執行文件的目錄)
  2. bin64 64位 動態鏈接庫
  3. doc 函數說明的文檔,用C++講解的
  4. examples 一些使用的例子,用C,C++,C#,python等語言的
  5. include_c C的頭文件
  6. include_cpp C++的頭文件
  7. lib 32位微軟Visual C++的庫
  8. lib64 64位微軟Visual C++的庫
  9. net .NET使用的
  10. stdcall 使用stdcall調用約定的32位動態庫

2. 環境配置

  • 包含相應的include和lib;

lib2

  • 在代碼中需要#pragma comment(lib,”libxl.lib”),或者將lib添加到依賴項。

    Project -> Properties -> Linker -> Input -> Additional Dependencies

3.簡單使用

3.1 創建操作execl的實例

  1. Book* xlCreateBook()

    創建一個二進制格式的XLS(Execl97-03)的實例,返回該實例的指針。函數的命名空間爲libxl

  2. Book* xlCreateXMLBook()

    創建一個XML格式的XLSX格式( Execl2007以上)的實例,返回該實例的指針。

3.2 簡單讀寫操作示例

#include <iostream>
#include "libxl.h"
#pragma comment(lib,"libxl.lib")
using namespace libxl;

int main()
{
    Book* book = xlCreateBook();//創建一個二進制格式的XLS(Execl97-03)的實例,在使用前必須先調用這個函數創建操作excel的對象
    //book->setKey(......);//如果購買了該庫,則設置相應的key,若沒有購買,則不用這行
    if (book)//是否創建實例成功
    {
        Sheet* sheet = book->addSheet(L"Sheet1");//添加一個工作表
        //一個excel文件既是一個工作簿,你可以把工作簿看作是一個本子,而本子是由一頁一頁的紙張裝訂在一起的,excel中的sheet就是這些紙張。
        if (sheet)
        {
            sheet->writeStr(1, 1, L"Hello, World !");//在第二行 第二列(B列)的表格中寫入字符串"Hello, World !"。程序中從0開始計數。第0行就是execl的第1行
            sheet->writeNum(2, 1, 1000);//在第三行 第二列(B列)的表格中寫入數字 "1000"。
            sheet->writeNum(3, 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(B3:B4)", boldFormat); //用新的字體格式 在第七行 B列 寫入 B3(第三行,第二列)+B4 的和

            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"))//保存到example.xls
        {
            //.....
        }
        else
        {
            std::cout << book->errorMessage() << std::endl;
        }
        book->release();//釋放對象!!!!!
    }
    return 0;
}

demo1

3.3 相應函數介紹

  • Sheet* addSheet(const wchar_t* name, Sheet* initSheet = 0)

    添加一個新的工作表到創建的execl對象,返回這個該工作表的指針。如果需要拷貝一個已經存在的工作表則設置initSheet 參數。需要主要的是 這個工作表必須是這個execl的工作表。如果失敗則返回NULL,可以調用Book:errorMessage()查看錯誤信息。

  • bool writeStr(int row, int col, const wchar_t* value, Format* format = 0)

    將字符串寫入指定格式的單元格中。如果格式等於0,則格式將被忽略。字符串是內部複製的,在調用此方法後可以被銷燬。如果發生錯誤返回false。

  • const wchar_t* readStr(int row, int col, Format** format = 0)

    從單元格中讀取字符串及其格式,存放該字符串的內存在釋放剛execl對象後,將會被銷燬。xls格式

    需要每次都從XML文件中獲取。xlsx格式

  • bool writeNum(int row, int col, double value, Format* format = 0)

    將數字或日期/時間寫入指定格式的單元格中。如果格式等於0,則格式將被忽略。使用Book::datePack()設置日期格式,如果發生錯誤返回false。

  • double readNum(int row, int col, Format format = 0) const**

    從單元格中讀取數字或日期/時間及其格式,使用Book::dateUnpack()提取日期。如果格式= 0,則發生錯誤。

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