跳到主要内容

excel

简介

一个用于对excel文件读写的库 (Import xlnt library)

组件接口

excel.gs

函数原型函数作用
object open(string path, string mode = "rw")以指定模式打开excel文件, 使用"w"选项时,若文件不存在则会进行创建,默认表(sheet)编号为0
object open_from_data(string path, string mode, buffer data)使用缓冲区中的数据创建新文件
mixed read_all(string path, buffer data = nil, int sheet = 0, bool is_to_str = false)读取指定文件或缓冲区中的指定表格
mixed read_all_by_sheets(string path, buffer data = nil, mixed sheet_info = nil, bool is_to_str = false)读取指定文件或缓冲区中的指定表格
mixed write_all(string path, array arr, int sheet = 0)将表格数据写入指定文件的指定的单个表格中,覆盖式写入
mixed write_all_by_sheets(string path, array sheets_content, array sheet_num)将表格数据写入指定文件的指定的多个表格中,将sheets_content[i]中的数组数据写入sheet_num[i]表格中,覆盖式写入

workbook.gs

支持对已经打开的excecl文档的操作

函数原型函数作用
buffer save_to_buffer()返回表格对应的二进制内容
enum ExcelErrorCode rename_to(string new_path)修改文件路径+文件名(没有文件操作,只改变object的属性),模式设置为rw
enum ExcelErrorCode set_sheet(int index)指定要进行处理的表格,打开excel时默认sheet编号为0
string get_sheet_title()获取当前sheet表的标题
array get_sheet_titles()获取所有sheet的标题
array get_merged_infos()获取合并单元格的信息
int get_rows_count()获取当前表的行数
int get_sheet_count()获取excel文件的表格个数
int get_columns_count()获取当前表的列数
float get_row_height(int row)获取行高
array get_rows_height(int begin_row, int end_row)批量获取行高
float get_column_width(int column)获取列宽
array get_columns_width(int begin_column, int end_column)批量获取列宽
enum ExcelErrorCode set_row_height(float size, int row)设置指定行高
enum ExcelErrorCode set_rows_height_dup(float size, int begin_row, int end_row)批量设置行高
array set_rows_height_one_by_one(array sizes, int begin_row, int end_row)逐个设置行高
enum ExcelErrorCode set_column_width(float size, int column)设置列宽
enum ExcelErrorCode set_columns_width_dup(float size, int begin_column, int end_column)批量设置列宽
array set_columns_width_one_by_one(array sizes, int begin_column, int end_column)逐个设置列宽
enum ExcelErrorCode clear_range(int top, int left, int bottom, int right)清除范围内的所有单元格
enum ExcelErrorCode merge(int top, int left, int bottom, int right)合并范围内的所有单元格
enum ExcelErrorCode unmerge(int top, int left, int bottom, int right)取消指定单元的合并单元格
mixed get(int row, int column, bool is_to_str = false)读取指定单元格
array get_range(int top, int left, int bottom, int right, bool is_to_str = false)批量读取范围内单元格数据
enum ExcelErrorCode set(mixed val, int row, int column)写入指定单元格
enum ExcelErrorCode set_dup(mixed val, int top, int left, int bottom, int right)批量写入指定范围的单元格
array set_one_by_one(array vals, int top, int left, int bottom, int right)逐个写入指定范围单元格
string get_background(int row, int column)获取指定单元格背景颜色
array get_background_range(int top, int left, int bottom, int right)获取范围内所有单元格背景色
map get_font_all_attrs(int row, int column)获取指定单元格所有字体属性
array get_font_all_attrs_range(int top, int left, int bottom, int right)批量获取单元格字体属性
mixed get_font_style_attr(enum ExcelFontAttribute style, int row, int column)获取单元格指定字体属性
array get_font_style_attr_range(enum ExcelFontAttribute style, int top, int left, int bottom, int right)获取范围内单元格指定字体属性
map get_borders(int row, int column)获取指定单元格所有边框属性
array get_borders_range(int top, int left, int bottom, int right)批量获取范围内单元格边框风格
enum ExcelErrorCode set_background(mixed color, int row, int column)设置指定单元格背景色
enum ExcelErrorCode set_background_dup(mixed color, int top, int left, int bottom, int right)批量设置范围内单元格背景色
array set_background_one_by_one(array colors, int top, int left, int bottom, int right)逐个设置范围内单元格,返回结果数组
enum ExcelErrorCode set_font_all_attrs(map my_font, int row, int column)设置单元格字体属性
enum ExcelErrorCode set_font_all_attrs_dup(map my_font, int top, int left, int bottom, int right)批量设置范围内单元格所有字体属性
array set_font_all_attrs_one_by_one(array my_fonts, int top, int left, int bottom, int right)逐个设置范围内单元格所有字体属性
enum ExcelErrorCode set_font_style_attr(enum ExcelFontAttribute style, mixed value, int row, int column)设置指定单元格的指定字体属性
enum ExcelErrorCode set_font_style_attr_dup(enum ExcelFontAttribute style, mixed value, int top, int left, int bottom, int right)批量设置指定范围内单元格指定字体属性
array set_font_style_attr_one_by_one(enum ExcelFontAttribute style, array my_values, int top, int left, int bottom, int right)逐个设置单元格的指定字体属性
enum ExcelErrorCode set_borders(map my_borders, int row, int column)设置指定单元格的所有边框属性
enum ExcelErrorCode set_borders_dup(map my_borders, int top, int left,int bottom, int right)批量设置范围内单元格的所有边框属性
array set_borders_one_by_one(array my_borders_arr, int top, int left, int bottom, int right)逐个设置指定范围内单元格所有边框属性
array read_all(bool is_to_str = false)读取当前表的所有的单元格
mixed read_all_by_sheets(bool is_to_str = false, mixed sheet_info = nil)读取指定的各个表的所有数据
mixed get_sheet_list(mixed sheet_info)获取符合条件的表编号数组
mixed get_sheet_index_by_name(string sheet_name)获取对应表名的表编号
enum ExcelErrorCode write_all(array arr)提供一个包含数据的“二维数组”,覆盖当前表内容
enum ExcelErrorCode append_rows(array vals_arr)提供一个包含数据的“二维”数组,添加表行(加到末尾)
enum ExcelErrorCode append_columns(array vals_arr)提供一个包含数据的“二维”数组,添加表列(加到末尾)
enum ExcelErrorCode clear(int row = -1, int column = -1)清空整个sheet,若指定行号和列号,则清空指定的一个单元格

枚举

CellValueType


NIL = 0,
INTEGER = 1,
BOOLEAN = 2,
REAL = 3,
STRING = 4,

ExcelFontAttribute


FONT_ATTRIBS = 0,
FONT_SIZE = 1,
FONT_BOLD = 2,
FONT_COLOR = 3,
FONT_ITALIC = 4,
FONT_STRIKEOUT = 5,
FONT_UNDERLINE = 6

OpenFlag


NONE = 0x00,

// Excel can write
WRITE = 0x01,

// Excel can read
READ = 0x02,

ExcelErrorCode


OK = 0,
DATA_CORRUPT,
ERR,
INVALID_PATH,
NOT_EXIST,
NOT_FILE,
NOT_SUPPORT,
READ_FAIL,
ALREADY_OPENED,
OPEN_FAIL,
OUT_OF_MEMORY,
VERSION_MISMATCH,
WRITE_FAIL,
SET_BACKGROUND_FAIL,
SET_FONT_COLOR_FAIL,
OUT_OF_SHEET_INDEX,
CAN_NOT_WRITE,
CELL_ALREADY_MERGED,
BAD_VALUE_TYPE,
BAD_VALUE,
BAD_STYLE,
INVALID_SHEET,
NAME_NOT_CHANGED,

underline_style


none,
double_,
double_accounting,
single,
single_accounting

border_style


none,
dashdot,
dashdotdot,
dashed,
dotted,
double_,
hair,
medium,
mediumdashdot,
mediumdashdotdot,
mediumdashed,
slantdashdot,
thick,
thin

样例

// sample.gs
import gs.util.file;
import pkg.excel;

string path = "tests/test.xlsx";
object excel_obj = excel.open(path, "rw");

excel_obj.set("Country", 1, 1);
excel_obj.set("Capital", 1, 2);
excel_obj.save();
// 修改后务必调用 .save() 保存
// 修改后务必调用 .save() 保存
// 修改后务必调用 .save() 保存
array data_arr = excel.read_all("tests/test.xlsx", nil, 1 , true);
write(data_arr);