日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux C/C++解析xls

發(fā)布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux C/C++解析xls 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

libxls作為開源庫,支持在Linux C/C++ 環(huán)境下解析(讀)xls文件,github提供了源碼:

https://github.com/libxls/libxls

但是github的源碼需要一堆輔助工具,才能夠編譯出libxls的C靜態(tài)庫,因此琢磨了下手動編譯libxls的靜態(tài)庫/動態(tài)庫方法,可以擺脫輔助工具缺失乃至版本問題導(dǎo)致的抓狂,尤其適合不方便聯(lián)網(wǎng)的內(nèi)網(wǎng)開發(fā)環(huán)境。

將fuzz、src、include目錄下所有文件拷貝到一個目錄下,修改*.c和*.h文件中指定的include文件路徑為當前目錄下
然后將locale.c、endian.c、fuzz_xls.c、ole.c、xls.c、xlstool.c編譯成相應(yīng)的.o文件
locale.h文件中需要添加語句“#include<stddef.h>”
gcc -c locale.c
gcc -c endian.c
gcc -c ole.c
gcc -c xls.c
gcc -c xlstool.c
gcc -c fuzz_xls.c -std=c99 (fuzz_xls.c源文件需要指定c99標準)
選擇test.c編譯成.o文件
gcc -c test.c
將所有.o文件鏈接在一起生成可執(zhí)行demo程序
gcc locale.o endian.o fuzz_xls.o ole.o xls.o xlstool.o test.o -o demo
也可以將locale.o、endian.o、fuzz_xls.o、ole.o、xls.o、xlstool.o編譯成靜態(tài)庫
ar -rc libxls.a locale.o endian.o fuzz_xls.o ole.o xls.o xlstool.o

gcc -c test.c -L . -lxls -o demo

或者將locale.o、endian.o、fuzz_xls.o、ole.o、xls.o、xlstool.o編譯成動態(tài)庫
gcc -fPIC -shared locale.o endian.o fuzz_xls.o ole.o xls.o xlstool.o -o libxls.so

demo程序鏈接庫
gcc test.c -L . -lxls -o demo

如果想要在C++代碼中使用libxls,需要將XlsReader.cpp和XlsReader.h編譯后鏈接到程序
g++ XlsReader.cpp main.cpp -L. -lxls -o demo -std=c++11

編寫一個xls文件中獲取指定id行的信息的demo:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>#include "XlsReader.h"using namespace std;
using namespace xls;int main(int argc, char *argv[])
{if (argc < 2){cout << "Usage: ./demo  <file.xls>" << endl;exit(1);}string width,  depth;int id = 3;flaot size[2] = {0};string file = string(argv[1]);WorkBook foo(file);cellContent cell = foo.GetCell(0, 1, 2);for (int sheetNum = 0; sheetNum < foo.GetSheetCount; ++ sheetNum) //遍歷xls所有sheet的列表{if  ( "sheet 1" != foo.GetSheetName(sheetNum) ) //選擇sheet 1continue;cout << "find sheet 1." << endl;foo.InitIterator(sheetNum);while (ture){cellContent c = foo.GetNextCell();if (c.type == cellBlank)break;if (c.row == 1)continue;if (c.col == 1){if (stoi(c.str) == id){width.assign(foo.GetCell(sheetNum, c.row, 3).str);depth.assign(foo.GetCell(sheetNum, c.row, 4).str);break;  //找到后即退出}}}}size[0] = atof(width.c_str());size[1] = atof(depth.c_str());cout << "Die No. : " << id << ", width: " << size[0] << ", depth: " << size[1] << endl;return 0;
}

總結(jié)

以上是生活随笔為你收集整理的Linux C/C++解析xls的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲乱熟女一区二区 | 国产在线观看99 | 国产精品极品白嫩在线 | 久久精品视频在线观看 | 黄色中文字幕在线观看 | 亚洲热热 | av成人资源 | 久草影音| 精品一区二区日韩 | 麻豆国产一区二区 | 肉体粗喘娇吟国产91 | 香蕉色网 | 精品一级少妇久久久久久久 | 黄色免费网站观看 | 综合久久影院 | 欧美特级一级片 | 亚洲成人午夜电影 | 中文字幕18页 | av官网| 在线观看日本中文字幕 | 老外一级黄色片 | 国产精品第十页 | 密臀久久 | 成人免费毛片果冻 | 少妇色视频 | 中文字幕有码无码人妻av蜜桃 | 青青草原成人 | 欧美aⅴ| 午夜视频在线观看一区二区 | 99久久精品国产成人一区二区 | 一级做a视频 | 国产又粗又长又黄 | 爱吃波客今天最新视频 | 亚洲免费在线观看av | 午夜精品免费观看 | 狠狠插狠狠操 | 日日噜噜夜夜爽爽 | 欧美高清视频一区 | 日韩一级完整毛片 | 五月天天色 | 亚洲免费看av | 深田咏美在线x99av | 国产在线观 | 视频精品一区二区 | 精品免费囯产一区二区三区 | 午夜天堂精品久久久久 | av手机天堂网 | 欧美日本国产在线 | 日本xx片| 少妇野外性xx老女人野外性xx | 农村老熟妇乱子伦视频 | 亚洲欧美日本一区 | 国产又粗又猛又黄又爽视频 | www.日韩欧美 | 亚洲一区不卡在线 | 欧美青草视频 | 亚洲免费在线看 | 国产91边播边对白在线 | 亚洲女人毛茸茸 | 毛茸茸日本熟妇高潮 | 奇米影视奇米色 | 亚洲熟妇一区二区三区 | 国产男男gay体育生网站 | 精品麻豆 | 森林影视官网在线观看 | 无码人妻aⅴ一区二区三区69岛 | 日本在线观看视频网站 | 国产一区美女 | 亚洲欧美中文日韩在线 | 久久午夜夜伦鲁鲁一区二区 | 在线观看免费视频a | 欧美日韩国产第一页 | 国产成人无码性教育视频 | 国产第一福利影院 | 国产精品视频一 | 狠狠干干干 | 午夜性色 | 色偷偷视频| 国产人妻大战黑人20p | 久草免费在线观看 | 欧美成人天堂 | 国产人妻人伦精品1国产盗摄 | 欧美美女一级片 | 国产福利久久 | 日本aⅴ视频 | 五月婷婷一区二区三区 | 色婷婷小说 | 夜夜骚网站 | 91激情在线观看 | 雪花飘电影在线观看免费高清 | 欧美日韩国产精品一区二区三区 | √天堂| 成人亚洲国产 | av在线你懂的 | 久久黄色小说 | 伊人影院av | 男人天堂2014 | av地址在线 | 亚洲精品乱码久久久久久国产主播 |