openwrt安装xlsx服务--处理excel表格

前言

最近需要用C语言来处理excel文件,所以需要在openwrt中引入excel处理工具Libxlsxwriter,这个库只适合写入excel文件,不适合读取。

一、xlsx工具

这是一个处理excel的工具,在examples里面有很多案例,这个要慢慢看。
仓库地址 https://github.com/jmcnamara/libxlsxwriter

二、xlsx安装

1.创建xlsxwriter安装包

lede-dtu-e/feeds/packages/libs/ 下创建xlsxwriter文件夹

在这里插入图片描述

2.编写makefile

第一次写这种包,可能有些地方写的不够好,如果有错误,大家多交流。

include $(TOPDIR)/rules.mk

PKG_NAME:=libxlsxwriter
PKG_VERSION:=RELEASE_1.1.7
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/jmcnamara/libxlsxwriter/archive/refs/tags/
PKG_HASH:=1f378e25d8bb5be258d3e04d3d24b8c23ff21bf206e6e206661844a96ca25eda


PKG_LICENSE:=BSD
PKG_LICENSE_FILES:=License.txt

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

define Package/xlsxwriter
  SECTION:=libs
  CATEGORY:=Libraries
  TITLE:=Library for xlsx file
  URL:=https://github.com/jmcnamara/libxlsxwriter
  DEPENDS:=+zlib
endef

define Package/xlsxwriter/description
	libxlsxwriter is a C library that can be used to write text, numbers, formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.
endef
CMAKE_OPTIONS +=-DBUILD_EXAMPLES=ON\
				-DBUILD_SHARED_LIBS=ON  #这个要加不然后面单独写demo 会报错

define Build/InstallDev
	$(INSTALL_DIR) $(1)/usr/include/xlsxwriter 
	$(CP) $(PKG_INSTALL_DIR)/usr/include/xlsxwriter/*  $(1)/usr/include/xlsxwriter/
	$(CP) $(PKG_INSTALL_DIR)/usr/include/xlsxwriter.h $(1)/usr/include/
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/


endef

define Package/xlsxwriter/install
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libxlsxwriter* $(1)/usr/lib/
endef



$(eval $(call BuildPackage,xlsxwriter))


3.文件系统的配置

make menuconfig 进入配置页面

在这里插入图片描述

在这里插入图片描述

4.编译

注意我的zlib已经编译过了,所以我将直接执行xlsxwriter的编译
make package/feeds/packages/xlsxwriter/install V=s
在这里插入图片描述

通过网络传输工具,把编译好的库放到你的开发板/usr/lib目录下面

5.演示案例

注意:我自己写了一个demo,如果你不会,我建议你从他的源码库里面有examples,你去里面那现成的。但是你最终也得自己去写编译文件。

#include <stdio.h>
#include "xlsxwriter.h"

int main() {
    lxw_workbook  *workbook  = workbook_new("example.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

    // 写入数据
    const char *data[][2] = {
        {"编号", "姓名"},
        {"1", "王大狗"},
        {"2", "王二狗"},
        {"3", "张志远"},
        // 可以继续添加更多数据
    };

    int row, col;

    for (row = 0; row < 4; row++) {
        for (col = 0; col < 2; col++) {
            worksheet_write_string(worksheet, row, col, data[row][col], NULL);
        }
    }

    // 关闭工作簿
    workbook_close(workbook);

    return 0;
}

makefile:参考下面的makefile

INCLUDE += -I$(STAGING_DIR)/usr/include/xlsxwriter -I$(STAGING_DIR)/usr/include/
CFLAGS += $(INCLUDE) -g
LIB= -L$(STAGING_DIR)/usr/lib  -lxlsxwriter
OBJS=all
$(OBJS): %.o:%.c
	$(CC) -o test_xlsx test_xlsx.c  $(INCLUDE) $(CFLAGS) $(LIB)

.PHONY: clean
clean:
	rm -rf $(BUILD_DIR)

运行结果

在这里插入图片描述

在这里插入图片描述

总结

文章大概还有很多需要修改的地方,但是目前是能用了。有问题评论区讨论。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值