Project

f_xlsx

0.0
The project is in a healthy, maintained state
cgo support xlsx, from golang excelize
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.0, <= 3.0
~> 13.0
~> 3.0

Runtime

~> 1
 Project Readme

FXlsx

说明

项目包含ext目录,目录下为go项目 使用go excelize库并编译为c链接库
gem 使用ffi调用链接库提供的方法,进而提供编辑xlsx文件的功能。

使用

  1. 打开文件

    • 读取已有文件
        f = FXlsx.open_file('文件路径')
    • 新文件
        f = FXlsx.new_file
  2. 操作方法调用

    方法名 说明 参数说明
    f.new_sheet(sheet_name) 创建指定名称sheet sheet_name为指定名
    f.set_sheet_name(source_sheet_name, target_sheet_name) 修改sheet名 source_sheet_name:要修改的sheet名
    target_sheet_name:要修改为sheet名
    f.set_sheet_visible(sheet_name, visible) 设置sheet可见 sheet_name:要操作的sheet名
    visible: true可见,false不可见
    visible = f.get_sheet_visible(sheet_name) 获取sheet是否可见 sheet_name:要操作的sheet名
    visible: 返回值 true则为可见,false不可见
    f.delete_sheet(sheet_name) 删除sheet sheet_name:要操作的sheet名
    names = f.get_sheet_list(sheet_name) 获取全部sheet名 sheet_name:要操作的sheet名
    names: 返回值为sheet名数组
    name = f.get_sheet_name(index) 获取指定索引sheet名 index:sheet索引值(0开始)
    name: 返回值为sheet名
    f.set_cell_value(sheet_name, row, col, value) 设置单元格值 sheet_name:要操作的sheet名
    row:行序号(0开始)
    col:列序号(0开始)
    value:值,可为int,float,string,nil
    val = f.get_cell_value(sheet_name, row, col) 获取单元格内容 sheet_name:要操作的sheet名
    row:行序号(0开始)
    col:列序号(0开始)
    val:返回值,单元格内容(string)
    rows = f.get_rows(sheet_name) 获取指定sheet内全部内容 sheet_name:要操作的sheet名
    rows:返回值,二维字符串数组
    f.put_row(sheet_name, row_index, row) 设置指定行内容 sheet_name:要操作的sheet名
    row_index:行索引
    row:要设置的行内容,字符串数组
    f.put_rows(sheet_name, rows) 设置sheet内容 sheet_name:要操作的sheet名
    rows: 要设置的内容,二位字符串数组
    f.merge_cell(sheet_name, start_row, start_col, end_row, end_col) 合并单元格 sheet_name:要操作的sheet名
    start_row:左上角行索引
    start_col:左上角列索引
    end_row:右下角行索引
    end_col:右下角列索引
    f.unmerge_cell(sheet_name, start_row, start_col, end_row, end_col) 拆分单元格 sheet_name:要操作的sheet名
    start_row:左上角行索引
    start_col:左上角列索引
    end_row:右下角行索引
    end_col:右下角列索引
    cells = f.get_merge_cells(sheet_name) 获取全部合并单元格 sheet_name:要操作的sheet名
    cells: 返回值,已合并的单元格信息,数组,{ start_row:左上角行索引, start_col:左上角列索引, end_row:右下角行索引, end_col:右下角列索引, value: 单元格值(字符串) }
  3. 保存

    • 打开已有文件时保存:f.save
    • 新文件保存: f.save_as(file_path)
  4. 注意事项

    仅能调用 FXlsx::File(含FXlsx代理出的两个方法open_file,new_file) 下的类/实例方法(即readme里说明的方法),不要调用FXlsx::XlsxExt/FXlsx::LibC 下的任何方法;因为 FXlsx::File 下的方法调用后释放内存,而其他地方的未做内存释放。

跨平台编译

前提条件:安装 go
  1. cd ext 路径
  2. 执行go mod tidy
  3. ./build.sh 打包c链接库(需修改链接库名为当前操作系统链接库后缀)
  4. 返回主目录,gem build f_xlsx.gemspec打包gem