LibXL庫使用詳解(篇一)
LibXL可以不依賴EXCEL讀取XLS和XLSX文件。包括設置對齊方式、字體、顏色等格式。支持C, C++, C#,Python等語言。並且支持多個平臺windows、Linux、Mac等。下面僅介紹windows平臺,C++語言的使用。詳情可見官網介紹
1. 從官網下載libxl庫
- 打開壓縮包後文件目錄如下:
* 重要文件介紹
- bin 32位 動態鏈接庫(需要將其放在可執行文件的目錄)
- bin64 64位 動態鏈接庫
- doc 函數說明的文檔,用C++講解的
- examples 一些使用的例子,用C,C++,C#,python等語言的
- include_c C的頭文件
- include_cpp C++的頭文件
- lib 32位微軟Visual C++的庫
- lib64 64位微軟Visual C++的庫
- net .NET使用的
- stdcall 使用stdcall調用約定的32位動態庫
2. 環境配置
- 包含相應的include和lib;
在代碼中需要#pragma comment(lib,”libxl.lib”),或者將lib添加到依賴項。
Project -> Properties -> Linker -> Input -> Additional Dependencies
3.簡單使用
3.1 創建操作execl的實例
Book* xlCreateBook()
創建一個二進制格式的XLS(Execl97-03)的實例,返回該實例的指針。函數的命名空間爲libxl
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;
}
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,則發生錯誤。