找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.Xu SpreadJS 开发认证
超级版主   /  发表于:2023-5-31 12:19  /   查看:1766  /  回复:0
本帖最后由 Joestar.Xu 于 2024-3-19 17:45 编辑

注:本教程适用于V17之前的版本,在V17及V17以后的版本都有独立的API可以修改单元格的样式/字体。

在部分场景下可能会存在仅修改字体样式的需求,但是由于style的font属性中不止存在字体,还可能存在加粗或者斜体等属性,因此想要通过代码修改一个区域的字体样式就不能使用传统的方法来进行修改。


因此这一块只能通过遍历的方法去完成,参考以下代码:

  1. const handleFontFamily = (val, sheet) => {
  2.   let sel = sheet.getSelections()[0];

  3.   for (let i = sel.row; i < sel.row + sel.rowCount; i++) {
  4.     for (let j = sel.col; j < sel.col + sel.colCount; j++) {
  5.       let style = sheet.getStyle(i, j);
  6.       if (style && style.font) {
  7.         let array = style.font.split(" ")
  8.         array[array.length - 1] = val;
  9.         style.font = array.toString().replaceAll(',', ' ');
  10.         
  11.         sheet.setStyle(i, j, style, GC.Spread.Sheets.SheetArea.viewport);
  12.       } else {
  13.         style = new GC.Spread.Sheets.Style();
  14.         style.font = "11pt " + val;
  15.         sheet.setStyle(i, j, style, GC.Spread.Sheets.SheetArea.viewport);

  16.       }
  17.     }
  18.   }
  19. };
复制代码


上述代码会对没有样式的单元格直接覆盖font,而如果有font属性,就将font属性中的值提取出来,根据特定的规则去替换为用户想要的结果。

如果有其他需求,也可以针对上述代码进行特定位置的修改。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部