ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Jspreadsheet (Jexcel) 表格样式定制:初始化 `style` 配置与 `getStyle`/`setStyle` 编程式样式管理

Jspreadsheet (Jexcel) 表格样式定制:初始化 `style` 配置与 `getStyle`/`setStyle` 编程式样式管理 前端UI组件【免费下载链接】ceJspreadsheet is a lightweight JavaScript data grid component for creating interactive data grids with advanced spreadsheet controls.项目地址https://gitcode.com/gh_mirrors/ce/ce点击查看免费下载Jspreadsheet早期名为 Jexcel是一个基于 DOM 的轻量级 JavaScript 数据表格组件其单元格样式直接由 CSS 驱动。本文基于仓库中的 v2 示例文档 table-styling.md系统讲解如何在初始化阶段通过style:[]指令为指定列/单元格预设样式以及初始化之后如何用getStyle/setStyle方法对单元格样式进行读取、修改与批量更新并进一步演示如何借助updateSettings的table回调为整张表格编写全局 CSS 规则如奇偶行着色、数字格式化和汇总行高亮。读完本文你将能够在 Jspreadsheet/Jexcel 项目中实现从单格高亮到整表视觉主题的完整样式控制并理解其底层实现与历史记录机制。两种样式管理方式初始化配置 vs 编程式方法在 Jspreadsheet/Jexcel 中单元格样式本质上是写到td元素style属性上的 CSS 规则。因此你既可以在初始化时通过配置项style预先定义部分单元格的样式在初始化之后通过实例方法setStyle动态修改样式用getStyle读取当前样式。初始化配置适用于表格加载即呈现特定外观的场景例如表头行高亮、状态列着色编程式方法则适用于响应业务事件动态改变外观的场景例如用户操作后标记单元格、计算完成后给汇总行上色。编程式方法速查调用形式作用$(#my1).jexcel(setStyle, A1, font-weight, bold)将 A1 的font-weight改为bold$(#my1).jexcel(setStyle, A2, background-color, yellow)将 A2 的background-color改为yellow$(#my1).jexcel(setStyle, [ { A1: font-weight: bold; color:red; }, { B2: background-color: yellow; }, { C1: text-decoration: underline; }, { D2: text-align:left; } ])一次性批量修改多个单元格的多种样式$(#my1).jexcel(getStyle, A1)获取 A1 单元格的全部样式字符串$(#my1).jexcel(getStyle)获取整张表格所有非空单元格的样式其中setStyle的单格形式参数为(cell, key, value)批量形式则传入一个对象数组v2 的 jQuery 语法或一个以单元格名为键、以 CSS 字符串/字符串数组为值的对象现代 CE 语法。单元格名采用 Excel 兼容写法如A1、B2。初始化阶段用style:[]指令预设单元格样式在 v2 示例中style配置项以数组形式给出数组元素是形如{ A1: background-color: orange; }的对象。初始化时 Jspreadsheet 会把数组中的每一条 CSS 规则写入对应单元格的style属性。html script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js/script link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jexcel.min.css typetext/css / link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jdropdown.min.css typetext/css / script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/excel-formula.min.js/script div idmy1/div script let data1 [ [US, Cheese, Yes, 2019-02-12], [CA;US;UK, Apples, Yes, 2019-03-01], [CA;BR, Carrots, No, 2018-11-10], [BR, Oranges, Yes, 2019-01-12], ]; $(#my1).jexcel({ data:data1, colHeaders: [ Product Origin,Description, Stock, Best before ], colWidths: [ 300, 200, 100, 100 ], columns: [ { type: dropdown, url:/jspreadsheet/countries, autocomplete:true, multiple:true }, // Remote source for your dropdown { type: text }, { type: dropdown, source:[No,Yes] }, { type: calendar }, ], style:[ { A1: background-color: orange; }, { B1: background-color: orange; }, { C1: background-color: orange; }, { D1: background-color: orange; }, ], }); /script /html该示例在一个包含多选下拉从远程地址加载国家列表、文本、单选下拉和日历日期选择的表格上将表头数据行的 A1–D1 四个单元格统一设置为橙色背景实现表头行的视觉区分。底层实现初始化时样式是如何被应用的在现代 CE 源码中style初始化配置的应用逻辑位于 worksheets.js表格数据加载setData完成之后立即调用obj.setStyle(obj.options.style, null, null, 1, 1)把配置中的样式批量写入对应单元格随后delete obj.options.style并将options.style重定义为返回getStyle()的 getter——这意味着初始化之后你随时可以通过配置对象读取整表当前的样式状态。setStyle的实现位于 style.js其核心流程为将单元格名如A1通过getIdFromColumnName转换为内部坐标[col, row]见 internalHelpers.js批量模式下先判断值是字符串还是数组字符串按;分割成多条声明再按:分割出属性名与属性值逐条写入element.style[key]跳过只读单元格若目标单元格带有readonlyclass 且未传force参数样式不会生效传forcetrue时则强制写入相同值即清除toggle 行为若新值与当前值相同且force为假则将该样式属性置空即重复设置同一样式等于撤销该样式可用于切换高亮等场景。历史记录与事件setStyle不只是改写 DOM它在修改前记录每个单元格的旧值随后通过setHistory以action: setStyle写入撤销/重做栈见 style.js因此样式变更同样支持 Undo/Redo——在 history.js 的撤销分支中会以旧值重新执行setStyle(historyRecord.oldValue, null, null, 1)还原样式重做分支history.js则以新值再次应用。此外每次样式变更都会触发onchangestyle事件回调参数为(instance, changes)其中changes是包含受影响单元格及其新样式的对象见 style.js。你可以利用该事件在样式被修改时同步其他 UI 或记录审计日志。CE 还额外提供了resetStyle(cells, ignoreHistoryAndEvents)方法用于一次性清空指定单元格的样式见 style.js。用getStyle读取样式与setStyle对称getStyle用于读取样式见 style.js传入单元格名如A1时返回该单元格的完整style字符串若同时传入属性名key则只返回该属性值不传任何参数时遍历整张表的每条记录收集所有具有非空样式的单元格返回{ A1: ..., B2: ... }形式的对象键名由getColumnNameFromId从内部坐标还原为 Excel 兼容单元格名。getStyle通常用于导出当前外观、判断某个单元格是否已被标记、或在批量修改前备份样式。如何为你的 jQuery 表格设置全局 CSS 规则除了逐格设置样式还可以通过updateSettings的table回调在单元格渲染完成后统一加工实现整表级别的视觉规则。回调签名为function (instance, cell, col, row, val, id)其中cell是当前单元格的 DOM 元素col/row是行列序号从 0 开始val是单元格值。html script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js/script script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js/script link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jexcel.min.css typetext/css / link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jdropdown.min.css typetext/css / script srchttps://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/excel-formula.min.js/script div idmy/div script let data [ [BR, Cheese, 1, 3.99], [CA, Apples, 0, 1.00], [US, Carrots, 1, 0.90], [GB, Oranges, 0, 1.20], [CH, Chocolats, 1, 0.40], [AR, Apples, 1, 1.10], [AR, Bananas, 1, 0.30], [BR, Oranges, 1, 0.95], [BR, Pears, 1, 0.90], [, , , ROUND(SUM(D1:D8), 2)], ]; $(#my).jexcel({ data:data, colHeaders: [Country, Food, Stock, Price], colWidths: [ 300, 100, 100, 100 ], columns: [ { type: autocomplete, url:/jspreadsheet/countries }, { type: autocomplete, source:[Apples,Bananas,Carrots,Oranges,Cheese,Kiwi,Chocolats,Pears] }, { type: checkbox }, { type: number }, ] }); $(#my).jexcel(updateSettings, { table: function (instance, cell, col, row, val, id) { // Number formating if (col 3) { // Get text txt $(cell).text(); // Format text txt numeral(txt).format(0,0.00); // Update cell value $(cell).html( $ txt); } // Odd row colours if (row % 2) { $(cell).css(background-color, #edf3ff); } // Remove controls for the last row if (row 9) { if (col 3) { $(cell).html(); } if (col 2) { $(cell).html( **Total** ); } $(cell).css(background-color, #f46e42); $(cell).css(color, #fff); } } }); // This is a custom method for rounding function ROUND(v, f) { v v.toFixed(f); v numeral(v).format(0,0.00); return $ v; } /script /html该示例演示了三类常见的全局表格美化手段按列格式化对第 3 列Price数字列使用numeral将数值格式化为千分位两位小数并加上$前缀奇偶行着色row % 2为真时给单元格设置浅蓝背景#edf3ff实现斑马纹效果汇总行定制对第 9 行存放ROUND(SUM(D1:D8), 2)公式的合计行清空前三列的控件与内容、在 Stock 列写入**Total**文本并整体设置橙底白字#f46e42/#fff。其中公式单元格ROUND(SUM(D1:D8), 2)会调用自定义的ROUND(v, f)函数用toFixed四舍五入后再以numeral格式化并加货币符号展示了样式回调与自定义公式的配合——数值层与表现层解耦数据仍是原始数字展示时再做格式化。在 v2 之外现代 CE 的等价用法与更多参考本文对应的 v2 原始示例位于 table-styling.md更完整的 v2 方法/事件/初始化参数速查见 quick-reference.md现代 CE 版本的样式文档见 style.md其中style配置已演进为Recordstring, string对象如{ E1: background-color: #ccffff; }并支持在 React、Vue、Angular 封装中作为 Worksheet 属性直接传入CE 还提供了resetStyle方法与onchangestyle事件样式变更同样纳入撤销/重做体系见 history.js更多可交互示例可从 examples.md 的 Table styling 条目跳转查看。小结Jspreadsheet/Jexcel 的样式体系围绕CSS 直写单元格 DOM这一核心设计展开初始化时用style配置预设外观运行时用setStyle单格/批量修改、用getStyle读取与导出需要整表级视觉规则时则通过updateSettings的table回调统一加工。在此基础上样式变更自动进入历史记录、可被 Undo/Redo并通过onchangestyle事件对外通知使改样式成为与改数据同等可控、可追踪的一等公民操作。赞分享前端UI组件【免费下载链接】ceJspreadsheet is a lightweight JavaScript data grid component for creating interactive data grids with advanced spreadsheet controls.项目地址https://gitcode.com/gh_mirrors/ce/ce点击查看免费下载相关推荐Tablesaw表格样式定制从基础样式到高级美化Tablesaw表格样式定制从基础样式到高级美化 Tablesaw是一个强大的响应式表格插件集合专为现代网页设计而生。通过Tablesaw开发者可以轻松创前端UI组件pyecharts数据标签高级配置格式化与样式定制pyecharts数据标签高级配置格式化与样式定制 数据可视化中数据标签Label是传递信息的关键元素。pyecharts提供了强大的标签配置系统通过数据可视化图表库Taro 跨端样式工程化tarojs/rn-style-transformer 的 rn 样式配置全解Taro 跨端样式工程化tarojs/rn style transformer 的 rn 样式配置全解 在 Taro 的 React Native 目标中前端跨平台小程序移动开发开发工具上一篇EGM-4B-SFT训练秘籍监督微调阶段的关键技术与实践下一篇Raw Accel鼠标加速驱动终极指南从零基础到专业配置完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表