spread.js常用api

2022/10/17 spread.jsexcel

# 初始化

//传入dom的id 第二个参数optionos 可以不传
spread = new GC.Spread.Sheets.Workbook(document.getElementById("id"),{
});
//表格设置为中文GC.Spread.Common.CultureManager.culture("zh-cn");初始化表格时执行'
GC.Spread.Common.CultureManager.culture("zh-cn");
1
2
3
4
5

options 可以在初始化时传入 也可以在后续手动更改

# 配置部分

# spread部分

方法 作用 示例
clearSheets() 清除所有sheet页 spread.clearSheets()
setSheetCount(1) 设置sheet页数
suspendPaint() 大多数时候, 在你改变 Spread 之后, 控件会自动刷新以达到重绘和更新状态的目的。 可是, 如果你一次做出大量的改变, 并且不希望每次改变都去重新绘制 Spread , 那么你可以调用 suspendPaint 暂停重绘
resumePaint() 完成改变之后,你可以调用resumePaint 重新激活Spread重绘,
repaint() 如果你的代码逻辑对控件进行修改,但控件未进行自刷新,那么你可以调用repaint方法强制刷新。 spread.repaint();

# 获取sheet对象

数据渲染基于每个表格内的每个单元格进行,单元格基于sheet页获取,操作前需要获取sheet对象;

var sheet = spread.getActiveSheet(0)
1

options 可以在初始化时传入 也可以在后续手动更改

# sheet.options参数

属性 作用 参数 示例
allowContextMenu 禁用右键 boolean sheet.allowContextMenu=false
newTabVisible 隐藏新建tab按钮 boolean
tabEditable 修改sheet名称 boolean
allowSheetReorder 禁止sheet移动 boolean
scrollbarMaxAlign 鼠标滚轮禁用 boolean
showVerticalScrollbar 显示竖向滚动条 boolean
showHorizontalScrollbar 显示横向滚动条 boolean
showScrollTip 以何种方式显示滚动提示条 ['both','horizontal','vertical','none'] GC.Spread.Sheets.ShowScrollTip.both

# options.gridline

属性 作用 参数 示例
showHorizontalGridline 显示单元格变框线 boolean sheet.options.gridline.showHorizontalGridline= false
showVerticalGridline 显示单元格变框线 boolean

# sheet.defaults参数

属性 作用 参数 示例
sheet.defaults.rowHeight 默认行高 number sheet.defaults.rowHeight=20
sheet.defaults.colWidth 默认列宽 number --

# 表格 获取单元格方法

属性 作用 参数 示例
getCell 获取列 可以一个获取列,传行列,获取指定单元格 sheet.getCell(1)
getRange 获取区域 开始行,开始列,结束行,结束列 sheet.getRange(1,0,2,2)

# 表格 方法

属性 作用 参数 示例
setRowCount 表格行数 number sheet.setRowCount(1)
setColumnCount 表格列数 number sheet.setColumnCount(1)
setColumnWidth 列宽 列:number,宽度:number sheet.setColumnWidth(0, 80);
setRowHeight 行高 行:number,高度:number sheet.setRowHeight(0, 80);
setFormula 设置公式 行:number,列:number,公式:string(excel公式写法) sheet.setFormula(0, 0,'SUM(A1:A20)')
setText 设置文字内容 行:number,列:number,内容:string sheet.setText(0, 0, '123')
setValue 设置数字内容 行:number,列:number,内容:number sheet.setValue(0, 0, 123)
addSpan 合并单元格 开始行,开始列,结束行,结束列 sheet.addSpan(0, 0, 1, 1)
frozenRowCount 冻结行 number sheet.frozenRowCount(4)
frozenColumnCount 冻结列 number sheet.frozenColumnCount(2)
zoom 整体缩放 number sheet.zoom(0.80)
autoFitRow 自动行高 行number sheet.autoFitRow(1)
autoFitColumn 自动列宽 列number sheet.autoFitColumn(1)

# 公式

  • 合计公式 SUM(A1:A3)
  • 除法公式 SUM(A1/B1)

# 设置单元格边框

var lineStyle = GC.Spread.Sheets.LineStyle.thin
var lineBorder = new GC.Spread.Sheets.LineBorder('black', lineStyle)
//应用样式区域
sheet.getRange(1, 0, rowCount -1, colCount).setBorder(lineBorder, { all: true}, GC.Spread.Sheets.SheetArea.viewport);
1
2
3
4

# 默认字体方向

var style = sheet.getDefaultStyle()
style.vAlign = GC.Spread.Sheets.VerticalAlign.center
style.hAlign = GC.Spread.Sheets.HorizontalAlign.left
//应用样式
sheet.setDefaultStyle(style)
1
2
3
4
5

# 单元格 方法

属性 作用 参数 示例
foreColor 文字颜色 string sheet.getCell(0, 0).foreColor("white");
backColor 背景颜色 string sheet.getCell(0, 0).backColor("#44546a")
vAlign 文字左右居中方式 function sheet.getCell(0, 0).vAlign(GC.Spread.Sheets.VerticalAlign.center)
hAlign 文字上下居中方式 function sheet.getCell(0, 0).hAlign(GC.Spread.Sheets.HorizontalAlign.center)
font 字体 string sheet.getCell(0, 0).font('bold 30px simkai')
wordWrap 自动换行 boolean sheet.getCell(0, 0).wordWrap(true)
formatter 格式化 "0.00%" sheet.getCell(0, 0).formatter("0.00%")
textDecoration 文字下划线 function sheet.getCell(0, 0).textDecoration(GC.Spread.Sheets.TextDecorationType.underline);

# 绑定点击事件


# 筛选

sheet.options.protectionOptions = {
    allowFilter: true,//开始筛选
    allowResizeRows: true,// 是否允许调整行
    allowResizeColumns: true, //是否允许调整列
    allowSort:true,//开启排序
}
//params(开始行.开始列,筛选多少行,筛选多少列) 可以筛选的区域
let filter = new  GC.Spread.Sheets.Filter.HideRowFilter(new  GC.Spread.Sheets.Range(3, 0, rowCount, 1));
//应用筛选
sheet.rowFilter(filter);
1
2
3
4
5
6
7
8
9
10

# 导出

# 导出excel

//获取当前sheet表
var sheet = spread.getActiveSheet();
//获取sheetname作为文件名,这里是从第一个格子获取,可以写死 或者变量传入
var fileName = sheet.getValue(0,0);
if (fileName.substr(-5, 5) !== '.xlsx') {
	fileName += '.xlsx';
}
//取消当前Excel的保护
// var sheet = spread.getActiveSheet();
sheet.options.isProtected = false;
//得到导出数据
var json = spread.toJSON();
//导出Excel
var excelIo = new GC.Spread.Excel.IO();
excelIo.save(json, function (blob) {
	saveAs(blob, fileName);
}, function (e) {
	console.log(e);
});
//恢复当前Excel的保护
sheet.options.isProtected = true;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 导出pdf

  1. 注册字体

    获取字体的二进制文件,本次使用创建了font.js储存字体二进制文件,后续引入相关js(改进时可以通过接口返回字体文件 不用进入页面都加载字体文件,实现按需引入)treeObj.registerCustomFont(fonts);

    var fontsObj= {"simkai.ttf":'二进制'}//这里太长就不放二进制文件了
    //2.使用spreadjs 自带的注册字体方法 将字体文件传入函数     
    function registerCustomFont (fontsObj) {
     var fonts = {normal: fontsObj["simkai.ttf"]}; 
     GC.Spread.Sheets.PDF.PDFFontsManager.registerFont('楷体', fonts);
     GC.Spread.Sheets.PDF.PDFFontsManager.fallbackFont = function (font) {
        var fontInfoArray = font.split(' '), fontName = fontInfoArray[fontInfoArray.length - 1];
         if (fontName === 'simkai') {return fonts.normal;}
       }
     },
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  2. 应用字体
    //获取style属性对象
     let style = new GC.Spread.Sheets.Style()
     //修改style的fonts 
     style.font = "16px simkai";
     //通过for循环讲样式挂在在表格的每一行  
      for (var i = 0; i < spread.getSheetCount(); i++) {
       spread.sheets[i].setDefaultStyle(style,GC.Spread.Sheets.SheetArea.viewport) 
       }
    
    1
    2
    3
    4
    5
    6
    7
    8
  3. 调整打印属性 打印属性官方API (opens new window)
    //1.获取当前sheet表格 注意:spread 是spread对象 需要根据实际内容进行更改
    sheet = spread.getActiveSheet()
    //2.获取当前打印属性
    printInfo = sheet.printInfo()
    //3.对当前打印属性进行修改打印边距打印纸张大小打印边框(横向边框与竖向边框)居中方式(水平/垂直)打印方向(横向纸张/竖向纸张)页眉页脚黑白/彩色
    
    
    1
    2
    3
    4
    5
    6
  4. 导出
    //1.取消当前EXCEL保护 
    sheet.options.isProtected = false
    //2.获取当前表格sheet名称 
    var fileName = sheet.getValue(0, 0)
    //3.开始打印     注意:spread 是spread对象 需要根据实际内容进行更改
    spread.savePDF(function (blob) { saveAs(blob, fileName+'.pdf');,function (error) {
     console.log(error);                
     });
    //4.恢复excel保护
     sheet.options.isProtected = true
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

# 打印 打印属性官方API (opens new window)

浏览器边距会覆盖打印设置边距 可能会出现显示空白页,在设置中将边距调整为无 或者调整打印页码

Q:如果打印多个sheet,但不是所有sheet。例如:spread中有四个sheet,如何打印其中的两个?
A:这样需要将spread复制到一个临时spread中,在临时spread中删除不打印的sheet,然后打印临时spread。
Q:如何将一个sheet分多页打印?
A:使用setRowPageBreak或setColumnPageBreak方法来插入行分页符或列分页符。
属性 作用 参数 示例
print 其中参数为需要打印sheet的index,传入sheet的index打印指定sheet。如果想全部打印,那么参数什么都不传即可。 number spread.print(sheetIndex?);

# 打印属性设置 printInfo

  var printInfo = sheet.printInfo();  //获取printInfo
1
属性 作用 参数 示例
bestFitColumns 打印时是否每一列都自适应宽度。 true/false printInfo.bestFitColumns(true/false)
bestFitRows 打印时是否每一行都自适应高度。 true/false printInfo.bestFitRows(true/false)
blackAndWhite 彩色打印还是黑白打印(true为黑白打印,false为彩色打印) true/false printInfo.blackAndWhite(true/false)
centering 打印的居中方式,参数为GC.Spread.Sheets.Print.PrintCentering的枚举,有以下四种 [both,horizontal,vertical,none] printInfo.centering(GC.Spread.Sheets.Print.PrintCentering.both)
headerLeft 表脚区域中间部分的文本及样式。 text/format printInfo.headerLeft(text/format)
headerCenter 表脚区域左部分的文本及样式。 text/format printInfo.headerCenter(text/format)
headerRight 表脚区域右部分的文本及样式。 text/format printInfo.headerRight(text/format)
footerCenter 表脚区域中间部分的文本及样式。 text/format printInfo.footerCenter(text/format)
footerLeft 表脚区域左部分的文本及样式。 text/format printInfo.footerLeft(text/format)
footerRight 表脚区域右部分的文本及样式。 text/format printInfo.footerRight(text/format)
margin 边距。 object printInfo.margin({top:75, bottom:75, left:20, right:20, header:10, footer:20});
orientation 设置打印方式横向(landscape)或纵向(portrait) GC.Spread.Sheets.Print.PrintPageOrientation.landscape[landscape,portrait] printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape)
pageOrder 打印顺序, GC.Spread.Sheets.Print.PrintPageOrder的枚举。[auto,overThenDown,downThenOver] printInfo.pageOrder( GC.Spread.Sheets.Print.PrintPageOrder.auto )
paperSize 设置打印纸张大小。 new GC.Spread.Sheets.Print.PaperSize()对象 printInfo.paperSize(new GC.Spread.Sheets.Print.PaperSize(300, 500))
qualityFactor 打印质量,value为1~8的一个数值,越高则打印效果越好。 value printInfo.qualityFactor(1)
repeatColumnStart 重复打印列的起始。 columnindex printInfo.repeatColumnStart(1)
repeatColumnEnd 重复打印列的结束。 columnindex printInfo.repeatColumnEnd(2)
repeatRowStart 重复打印行的起始。 rowindex printInfo.repeatRowStart(rowindex)
repeatRowEnd 重复打印行的结束。 rowindex printInfo.repeatRowEnd(rowindex)
rowEnd 打印截至至某一行
rowStart 打印起始与某一行
columnEnd 打印截至至某一列
columnStart 打印起始于某一列,设置部分打印时使用。
showBorder 是否显示边框 true/false
showColumnHeader 是否打印列头 PrintVisibilityType的枚举[inherit: 继承自表单的设置 ((默认) 行头/列头可见)。hide: 不打印。show:每页中都显示。showOnce: 显示一次 (在第一页)。]
showRowHeader 是否打印行头 同上
showGridLine 是否打印网格线 (默认是打印) true/false
useMax
zoomFactor 放大/缩小比例,例如printInfo.zoomFactor(0.8)为缩放至80%
text:文本内容,如:printInfo.footerCenter("GrapeCity")
format:& 被用作为特殊的转义字符,用来转义以下打印特殊数据的关键字。
P: 当前页数。
N: 总页数。
D: 当前日期。(今天)
T: 当前时间。
G: 图片,用来显示相应区域图片(XXXImage)的占位符。
S: 删除线。
U: 下划线。
B: 粗体。
I: 斜体。
": (双引号),用来设置字体。
F: Spread的名字。
A: 表单名字。
如:printInfo.footerCenter("&P/&N");
   printInfo.headerLeftImage(img):表头区域左部分的图片。img为图片的路径或者图片的base64编码。
   printInfo.headerCenterImage(img):表头区域中间部分的图片。img为图片的路径或者图片的base64编码。
   printInfo.headerRightImage(img):表头区域右部分的图片。img为图片的路径或者图片的base64编码。
   printInfo.footerLeftImage(img):表脚区域左部分的图片。img为图片的路径或者图片的base64编码。
   printInfo.footerCenterImage(img):表脚区域中间部分的图片。img为图片的路径或者图片的base64编码。
   printInfo.footerRight(img):表脚区域右部分的图片。img为图片的路径或者图片的base64编码。
   
   printInfo.margin(object):边距。例如printInfo.margin({top:75, bottom:75, left:20, right:20, header:10, footer:20});
           value.top {number} 顶部边距
           value.bottom {number} 底部边距
           value.left {number} 左边距
           value.right {number} 右边距
           value.header {number} 顶部标题的偏移量
           value.footer {number}   底部标题的偏移量
    printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape/GC.Spread.Sheets.Print. PrintPageOrientation.portrait):设置打印方式横向或纵向
     GC.Spread.Sheets.Print.PrintPageOrientation.landscape为横向
     GC.Spread.Sheets.Print.PrintPageOrientation.portrait为纵向
     如果要实现横向打印与纵向打印不仅要在设置中进行设置,还需将浏览器的设置也与之设置一致

    printInfo.pageOrder(value):打印顺序,value为GC.Spread.Sheets.Print.PrintPageOrder的枚举。
           GC.Spread.Sheets.Print.PrintPageOrder.auto 自动
           GC.Spread.Sheets.Print.PrintPageOrder.overThenDown 先横向排列再竖向排列
           GC.Spread.Sheets.Print.PrintPageOrder.downThenOver 先横向排列再竖向排列
           当需要一页纸打印多个sheet时,可以设置打印顺序来调整sheet以横向排列还是纵向排列。

     printInfo.paperSize(paperSize):设置打印纸张大小。
         paperSize需要初始化一个new GC.Spread.Sheets.Print.PaperSize()对象,
         其中参数有GC.Spread.Sheets.Print.PaperKind的枚举
         PaperSize对象同样支持传入纸张的宽与高来确定纸张大小,
         例如:new GC.Spread.Sheets.Print.PaperSize(300, 500)     

paperkind可以参考 (opens new window)

   printInfo.qualityFactor(value):打印质量,value为1~8的一个数值,越高则打印效果越好。
   printInfo.repeatColumnStart(columnindex):重复打印列的起始。
   printInfo.repeatColumnEnd(columnindex):重复打印列的结束。
   printInfo.repeatRowStart(rowindex):重复打印行的起始。
   printInfo.repeatRowEnd(rowindex):重复打印行的结束。
   重复打印行列当有需要在打印的每一页都打印行列数据时使用,参数为行与列的index。

   printInfo.rowEnd(rowindex):打印截至至某一行
   printInfo.rowStart(rowindex):打印起始与某一行
   printInfo.columnEnd(columnindex):打印截至至某一列
   printInfo.columnStart(columnindex):打印起始于某一列,设置部分打印时使用。
   printInfo.showBorder(true/false):是否显示边框
   printInfo.showColumnHeader/printInfo.showRowHeader:是否打印列头/行头,
             参数为PrintVisibilityType枚举值。
              inherit: 继承自表单的设置 ((默认) 行头/列头可见)。
              hide: 不打印。
              show: 在每页中都显示。
              showOnce: 显示一次 (在第一页)。
    printInfo.showGridLine:是否打印网格线 (默认是打印)。
    printInfo.useMax
    printInfo.zoomFactor:放大/缩小比例,例如printInfo.zoomFactor(0.8)为缩放至80%
//获取当前sheet表
var sheet = spread.getActiveSheet()
//获取打印属性对象
var printInfo = new GC.Spread.Sheets.Print.PrintInfo()
//调整打印设置黑白
//打印注意:与导出pdf打印设置一致
//应用打印属性
sheet.printInfo(printInfo)
//打印
spread.print(0)
1
2
3
4
5
6
7
8
9
10
最后更新时间: 2023/1/12 15:59:09