工作表数据操作

SpreadJS 提供了灵活的工作表数据操作方法,支持单元格值的设置与获取、批量数据写入、数据区域的复制与移动等常用功能。开发者可以通过简洁的 API 快速实现数据的读写操作,满足各类业务场景下的数据处理需求。

概述 本 Demo 展示了 SpreadJS 工作表数据操作的核心方法,包括单元格值的设置与获取、批量数据写入、数据区域的复制与移动,以及零值显示控制等功能。 实现思路 使用 setValue() 和 setText() 方法为单个单元格设置数据和文本 使用 setArray() 方法批量写入二维数组数据到指定区域 通过按钮事件演示 copyTo() 方法复制数据区域 通过按钮事件演示 moveTo() 方法移动数据区域 使用复选框控制 showZeros 选项,演示零值显示与隐藏效果 代码解析 设置单个单元格数据 setValue() 方法用于设置单元格的原始值(可以是数字、字符串、日期等),setText() 方法用于设置单元格的格式化文本。 批量设置数组数据 setArray() 方法可以将二维数组批量写入到工作表的指定位置,适用于大量数据的高效导入。相比多次调用 setValue(),使用 setArray() 可以显著提升性能。 复制数据区域 点击"复制"按钮时,调用 copyTo() 方法将数据从源区域(H2:J8)复制到目标区域(H11:J17)。参数依次为:源行、源列、目标行、目标列、行数、列数、复制选项。 移动数据区域 点击"移动"按钮时,调用 moveTo() 方法将数据从源区域(H1:J8)移动到目标区域(H10:J17)。移动后,源区域的数据将被清除。 控制零值显示 通过复选框控制 showZeros 选项。当取消勾选时,值为 0 的单元格将显示为空白,而不是显示数字 "0"。这仅影响显示效果,不影响实际值和计算结果。 运行效果 表格左侧展示了 setValue() 和 setText() 的区别,不同类型的数据以不同的方式设置 表格右侧展示了 setArray() 批量设置的数据区域(青色背景) 点击"复制"按钮,会将右侧青色区域的数据复制到下方粉色区域 点击"移动"按钮,会将整个数据区域(包含标题行)向下移动到粉色区域 取消勾选"显示零值单元格"复选框,值为 0 的单元格会显示为空白 API 参考 setValue 方法 row、col:单元格位置 value:要设置的值(可以是数字、字符串、日期、富文本对象等) sheetArea:可选,指定工作表区域 ignoreRecalc:可选,是否忽略重新计算 setArray 方法 row、column:起始单元格位置 array:二维数组,包含要设置的值 setFormula:可选,是否设置为公式(默认为 false) copyTo 方法 fromRow、fromColumn:源区域起始位置 toRow、toColumn:目标区域起始位置 rowCount、columnCount:要复制区域的行数和列数 option:复制选项,如 GC.Spread.Sheets.CopyToOptions.all moveTo 方法 参数与 copyTo() 相同,区别在于移动后源区域数据会被清除。 showZeros 选项 控制是否在单元格中显示零值。默认为 true(显示 0),设置为 false 时零值显示为空白。
window.onload = function() { var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss')); var spreadNS = GC.Spread.Sheets; var sheet = spread.getSheet(0); sheet.suspendPaint(); sheet.setValue(1, 1, 'setValue'); sheet.setValue(1, 2, 2014); sheet.setText(3, 1, 'setText'); sheet.setText(3, 2, '01/01/2014'); sheet.setText(5, 1, '0 Value'); sheet.setValue(5, 2, 0); sheet.setColumnWidth(2, 90); sheet.setColumnWidth(8, 120); sheet.setColumnWidth(9, 120); sheet.setValue(0, 7, 'setArray'); sheet.setArray(1, 7, [ [ 'ID', 'Phone Number', 'Address' ], [ 1, '021-432378', 'Marbury Road' ], [ 2, '021-432668', 'Chester Road' ], [ 3, '021-432238', 'Gertt Road' ], [ 4, '021-432533', 'Jnyliner Road' ], [ 5, '021-432125', 'Approach Road' ], [ 6, '021-432789', 'Jones Road' ] ]); initStyle(sheet); document.getElementById('btnCopy').addEventListener('click', function() { sheet.copyTo(1, 7, 10, 7, 7, 3, spreadNS.CopyToOptions.all); }); document.getElementById('btnMove').addEventListener('click', function() { sheet.moveTo(0, 7, 9, 7, 8, 3, spreadNS.CopyToOptions.all); }); document.getElementById('showZeros').addEventListener('change', function() { spread.getActiveSheet().options.showZeros = this.checked; }); sheet.resumePaint(); }; function initStyle (sheet) { let style = new GC.Spread.Sheets.Style(); style.backColor = '#c6c0ca'; for (let row = 1; row < 6; row++) { for (let col = 1; col < 3; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#bbd2cc'; for (let row = 1; row < 8; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } style = new GC.Spread.Sheets.Style(); style.backColor = '#fcd8dd'; for (let row = 10; row < 17; row++) { for (let col = 7; col < 10; col++) { sheet.setStyle(row, col, style); } } }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="zh-cn" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" class="sample-spreadsheets"></div> <div class="options-container"> <p>用户可以为工作表设置数据或从工作表获取数据。</p> <p>点击“复制”按钮将把数据从H2:J8复制到H11:J17。</p> <p>点击“移动”按钮将把数据从H1:J8移动到H10:J17。</p> <input type="button" value="复制" id="btnCopy" /> <input type="button" value="移动" id="btnMove" /> <hr /> <input type="checkbox" class="usedRange" id="showZeros" checked /> <label for="showZeros" class="usedRange">显示零值单元格</label> </div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: calc(100% - 280px); height: 100%; overflow: hidden; float: left; } .options-container { float: right; width: 280px; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .option-row { font-size: 14px; padding: 5px; margin-top: 10px; } label { display: block; margin-bottom: 6px; margin-top: 6px; } input { padding: 4px 6px; } input[type=button] { margin-top: 6px; display: inline-block; width: 85px; } .usedRange { display: inline-block; } #btnCopy { margin-right: 40px; } #data-used-range { margin-left: 75px; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }