ac-hand-table

0.2.1 • Public • Published

电子表格 HandTable

ac-hand-table 是基于 handsontable 的适用于 React 框架的电子表格,它提供了数据绑定、数据验证、行过滤、列排序、表格多选、表格样式、表头交互、表头拖拽、行高拖拽、行交换等操作

如何使用

使用 npm 安装最新版本

$ npm install ac-hand-table  --save

引入
import AcHandTable from 'ac-hand-table';
样式
import 'ac-hand-table/dist/index.css';

代码演示

API

AcHandTable

参数 说明 类型 默认值
id 组件唯一id string -
data 表格数据数据 array []
columns 列的配置表,具体配置见下表 array []
language 表格语言 'zh-CN'或 'en-US'或 'zh-TW' 'zh-CN'
rowHeaders 表头信息 booleanarrayfunction (index)=>{} true
colWidths 列宽 number 100或 string '100px'或 array [100,200]或 func (index)=>{} -
rowHeights 列宽 number 100或 string '100px'或 array [100,200]或 func (index)=>{} -
width 表格总宽度 '%' 或 'px' -
height 表格总高度 '%' 或 'px' 或 'auto' -
multiSelect 是否含有多选框 boolean true
manualColumnResize 是否列宽可以拖动 boolean true
manualColumnMove 是否列可以交换 boolean false
manualRowResize 是否行高可以拖动 boolean false
manualRowMove 是否行可以交换 boolean false
fixedColumnsLeft 列左固定 number -
fixedColumnsRight 列右固定 number -
fixedRowsBottom 行头固定 number -
fixedRowsTop 行头固定 number -
manualColumnFreeze 是否开启固定列 boolean true
copyPaste 是否可以复制粘贴 boolean true
customBorders 是否开启边框设置 boolean true
copyable 是否开启键盘复制 boolean true
allowInsertColumn 是否开启插入列 boolean true
allowInsertRow 是否开启插入行 boolean true
multiColumnSorting 是否列可以排序 boolean true
dropdownMenu 表上下文下拉菜单 booleanarray 见下表 dropdownMenu contextMenu false
contextMenu 行上下文下拉菜单 booleanarray 见下表 dropdownMenu contextMenu false
filters 表头下拉菜单中是否启动过滤器 boolean false
stretchH 表宽度不等于所有列宽的计算总和时,列宽设置 'none'或 'all' 或'last' 'none'
rowStyle 行设置样式 func -
activeHeaderClassName 选中列标题样式 strig -
columnHeaderHeight 列表头高 number 25
fixedShadow 是否固定表格阴影 boolean false
fixedColumnsLeft 固定表格列 number -
fixedRowsTop 是否固定表格顶部 number -
fixedRowsBottom 是否固定表格底部 number -
nestedHeaders 多表头 array [['a','b']]或者[['a',{label:'b',colspan:2}]] -
fillHandle 自动填充设置 booleanstring('vertical' or 'horizontal') 或者 object见下表 fillHandle 'vertical'

dropdownMenu contextMenu

说明 额外条件
row_above 在选中行上方插入行 -
row_below 在选中行下方插入行 -
col_left 插入列左侧操作 -
col_right 插入列右侧操作 -
--------- 分隔器 -
remove_row 删除行动作 -
remove_col 删除列操作 -
clear_column 清除列值操作 -
undo 撤消操作 undoRedo已开启
redo 重做动作 undoRedo已开启
make_read_only 进行只读操作 -
alignment 对齐操作 -
cut 剪切操作 copyPaste打开
copy 复制操作 copyPaste打开
merge_cells 合并单元格 -
freeze_column 锁定列操作 manualColumnFreeze已开启
unfreeze_column 解锁列操作 manualColumnFreeze已开启
borders 自定义边框操作 customBorders已开启
allowEmpty 是否日期可以值为空 boolean

Column

参数 说明 类型 默认值
data 列的键,支持'date.xx' string -
type 数据类型 text numeric date time checkbox select dropdown autocomplete password refMultipleTable refTreeWithInput refTreeTableWithInput refTreeTransferWithInput string true
className 样式名 string -
readOnly 是否数据仅可读 boolean false
readOnlyCellClassName 自定义只读表格样式 string -
textTooltip 表格内容超出表格的宽出现 ... boolean true
editor 是否数据可以编辑 boolean true
strict 是否输入到单元格的值区分大小写 boolean false
placeholder 单元格占位文字 string -
tableClassName 表格样式类名 string -
dateFormat 日期格式 string -
correctFormat 当前日期是否格式化 boolean true
defaultDate 默认日期 string -
source 数据类型 'autocomplete' 或 'dropdown' 数据源 array func (query,callback)=>{} ''
numericFormat 数字类型格式化 object -
multiColumnSorting 打开多列排序 boolean 或 object false
allowInvalid 数据校验失败是否可以操作其他表格 boolean true
allowEmpty 是否日期可以值为空 boolean true
validator 自定义验证方法 func (value,callback)=>{} -
onClick 表格点击事件 func (rowData, rowNum, value)=>{} -
dblClick 表格双击事件 func (rowData, rowNum, value)=>{} -
onChangeCell 表格值变化事件 func (rowData, rowNum)=>{} -
refSource 参照数据回调 func (value, type, callback)=>{} 'type'值为auto tree table -
refOnChange 参照选中回调 func (refData, rowData, rowNum)=>{} -
refConfig 参照配置 见下表 refConfig -
customValue 自定义表格内容渲染,通常用于表格联动 (rowData)=>{} -
renderer 自定义表格渲染,支持dom (instance, td, row, col, prop, value, cellProperties)=>{} -

refConfig 更多参考

参数 说明 类型 默认值
columnsKey 获取参照选中对象的值,约定数组第一个为表格回写值 array ['refname','refcode']
rowKey 拖拽修改值关联key array -
isThreeBar 表格中是否出现三道杠icon boolean false
columnsData 表头数据 array -
tableData 表体数据 array -
columnsData 表头数据 array -
treeData 树参照数据 array -

multiColumnSorting

参数 说明 类型 默认值
initialConfig 某些列初始排序状态 object -
indicator 是否显示排序顺序指示符(小箭头) boolean true
sortEmptyCells 是否空单元格应该参与排序 boolean true
headerAction 是否单击标题应该对表进行排序 boolean true
compareFunctionFactory 自定义比较函数 (sortOrder, columnMeta)=>{} -

numericFormat

参数 说明 类型 默认值
pattern 数字模式 具体参考 string -
culture 货币处理 具体参考 string -

fillHandle

参数 说明 类型 默认值
autoInsertRow 填充到最后一行是否自动添加行 boolean true
direction 自动填充方向 string 值为vertical horizontal 'vertical'

csvConfig

参数 说明 类型 默认值
filename 将导出文件名 string CSV_[YYYY]-[MM]-[DD]
exportHiddenRows 在导出的文件中包含隐藏的行 boolean true
exportHiddenColumns 在导出的文件中包含隐藏列 boolean true
columnHeaders 在导出的文件中包含列标题 boolean true
rowHeaders 在导出的文件中包含行标题 boolean true
columnDelimiter 列分隔符 string ','
rowDelimiter 行分隔符 string \r\n
range 将导出到文件的单元格范围 [] -
mimeType 将导出文件类型 string "text/csv"

获取表格里的数据

 getData = () => {
    // 获取数据
    this.child.getData((data) => {
      console.log('data', data);
    });
  };

表格添加行

  onInsertRowData = () => {
    // onInsertRowData(number,source)
    // number 插入行的位置,0 为行首,-1 为行尾
    // source 插入的行对象,
    this.child.onInsertRowData(); // 默认行首,空对象
  };

删除多选选中的行

 
 onDelRowCheck = () => {
     this.child.onDelRowCheck();
  };
 

获取验证通过后数据

 
  getData = (callback) => {
    this.child.getData((data) => {
      console.log('data', data);
    });
  };
 

获取多选选中的数据

 
 getCheckData = () => {
     const checkboxData = this.child.getCheckbox();
     console.log('checkboxData', checkboxData);
 };
 

获取被修改后的数据

  getUpdateData = () => {
    const updateData = this.child.getUpdateData();
    console.log('updateData', updateData);
  };

获取被格式化的数据

  getFormatData = () => {
    const formatData = this.child.getFormatData();
    console.log('formatData', formatData);
  };

获取新增加的数据

  getAddRowData = () => {
    const addRowDate = this.child.getAddRowData();
    console.log('addRowDate', addRowDate);
  };

获取删除的数据

  getDelRowData = () => {
    const delRowData = this.child.getDelRowData();
    console.log('delRowData', delRowData);
  };

获取通过鼠标选中的行

  getSelectData = () => {
   // rowList 鼠标选中的行数据
   // indexList 鼠标选中行数据的下标
    const {rowList,indexList} = this.child.getSelectData();
    console.log('selectData',rowList,indexList);
  };

删除通过鼠标选中的行

  onDelRowSelect = () => {
     // rowList 删除的行数据
     //  indexList 删除行数据的下标
    const {rowList,indexList} = this.child.onDelRowSelect();
    console.log('rowList,indexList', rowList,indexList);
  };

导出csv

 
  onDownCsv = () => {
    this.child.onExportCSV();
  };
 

导出模板

onExportHeader = () => {
  this.child.onExportHeader();
};
 

动态更新设置

 this.child.updateSettings({
      readOnly: false,
});

日期国际化

i18n: {
      previousMonth: 'Previous Month',
      nextMonth: 'Next Month',
      months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
      weekdays: ['', '', '', '', '', '', ''],
      weekdaysShort: ['', '', '', '', '', '', '']
      },

开发调试

$ npm install -g bee-tools
$ git clone https://github.com/tinper-acs/ac-hand-table
cd ac-hand-table
$ npm install
$ npm run dev

Readme

Keywords

none

Package Sidebar

Install

npm i ac-hand-table

Weekly Downloads

11

Version

0.2.1

License

MIT

Unpacked Size

1.53 MB

Total Files

6

Last publish

Collaborators

  • ranyanchuan