自动适应

SpreadJS 允许开发者使用自动适应功能自动调整工作表中的行高和列宽。

在本示例中,你可以看到单元格内的长文本被截断。你可以通过自动调整列宽(autoFitColumn)和自动调整行高(autoFitRow)方法来调整列和行的宽度或高度。对于包含多行内容的单元格,你也可以设置自动换行(wordWrap)。 你也可以选中多列、多行或整个工作表,然后双击其中一个选中的列或行,即可为所有选中的列或行应用自动调整尺寸(AutoFit)功能。
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); initSpread(spread); }; function initSpread(spread) { var sheet = spread.getActiveSheet(); sheet.suspendPaint(); // set style sheet.setSelection(0,0,10,3); // set text const multilineData = [ [ "阿尔法 贝塔 伽马\n德尔塔 厄普西隆 泽塔\n伊塔 西塔 约塔\n卡帕 兰姆达 缪", "敏捷的棕色狐狸\n跳过\n懒散的狗\nspreadjs 演示", "苹果 香蕉\n橙子 芒果\n梨 桃子\n李子 樱桃" ], [ "第一行在这里\n第二行更长的文本\n第三行结束", "随机词语\n包含多个\n换行符\n在单元格内", "第一行文本\n第二行\n第三行\n第四行" ], [ "太阳 月亮 星星\n银河系 宇宙\n黑洞\n超新星 脉冲星", "狗 猫 鸟\n鱼 兔子\n仓鼠 蛇\n鹦鹉 蜥蜴", "编程\nJavaScript\nC++\nPython Rust\nGo" ], [ "SpreadJS 演示\n多行单元格\n文本换行测试\n对齐检查", "东北\n西南\n中心中间\n方向流动", "字母数字\n符号与标记\n随机文本\nUnicode 字符" ], [ "一二三\n四五六\n七八九\n十十一", "行包含\n更高文本\n会换行\n在单元格", "测试数据\n演示内容\n示例用法\n练习样本" ], [ "重叠\n多行\n测试行\n换行内容", "红绿蓝\n黄青品红\n黑白灰", "东西\n南北\n指南针点\n地图方向" ], [ "最终示例\n最后一行\n结束文本\nspreadjs 自适应", "这是一条\n非常长的行\n应该\n在单元格内换行", "动态内容\n随机词语\n填充文本\n更长样本" ], [ "表格数据\n第八行\n第一列\n多行文本", "样本值\n电子表格演示\n富文本\n对齐模式", "自适应行\n自适应列\n换行开关\n文字换行" ], [ "测试两端对齐\n对齐演示\n文字换行案例", "段落一\n段落二\n段落三", "东侧\n西侧\n北部区域\n南部街区" ], [ "演示结束\n最后一行\n带内容\nspreadjs 展示", "最终测试单元格\n数据结束\n多行换行", "再见行\n最后样本\n测试完成" ] ]; sheet.setArray(0, 0, multilineData); sheet.resumePaint(); document.getElementById('autofit-column').onclick = function () { const selections = sheet.getSelections(); if (!selections || selections.length === 0) { return; } sheet.suspendPaint(); selections.forEach(sel => { const startCol = sel.col; const endCol = sel.col + sel.colCount; for (let c = startCol; c < endCol; c++) { sheet.autoFitColumn(c); } }); sheet.resumePaint(); }; document.getElementById('autofit-row').onclick = function () { const selections = sheet.getSelections(); if (!selections || selections.length === 0) { return; } sheet.suspendPaint(); selections.forEach(sel => { const startRow = sel.row; const endRow = sel.row + sel.rowCount; for (let r = startRow; r < endRow; r++) { sheet.autoFitRow(r); } }); sheet.resumePaint(); }; document.getElementById('wrap').onclick = function () { const selections = sheet.getSelections(); if (!selections || selections.length === 0) { return; } sheet.suspendPaint(); selections.forEach(sel => { const startRow = sel.row; const endRow = sel.row + sel.rowCount; const startCol = sel.col; const endCol = sel.col + sel.colCount; for (let r = startRow; r < endRow; r++) { for (let c = startCol; c < endCol; c++) { let cellStyle = sheet.getStyle(r, c) || new GC.Spread.Sheets.Style(); let currentWrap = cellStyle.wordWrap || false; cellStyle.wordWrap = !currentWrap; sheet.setStyle(r, c, cellStyle); } } }); sheet.resumePaint(); }; document.getElementById('toggle-wrap-autoFit').onclick = function () { const selections = sheet.getSelections(); if (!selections || selections.length === 0) { return; } sheet.suspendPaint(); selections.forEach(sel => { const startRow = sel.row; const endRow = sel.row + sel.rowCount; const startCol = sel.col; const endCol = sel.col + sel.colCount; // toggle wrap for (let r = startRow; r < endRow; r++) { for (let c = startCol; c < endCol; c++) { let cellStyle = sheet.getStyle(r, c) || new GC.Spread.Sheets.Style(); let currentWrap = cellStyle.wordWrap || false; cellStyle.wordWrap = !currentWrap; sheet.setStyle(r, c, cellStyle); } } // autofit col for (let c = startCol; c < endCol; c++) { sheet.autoFitColumn(c); } // autofit row for (let r = startRow; r < endRow; r++) { sheet.autoFitRow(r); } }); sheet.resumePaint(); }; }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <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$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/jquery-1.8.2.min.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"> <div class="option-row"> <input type="button" value="自动调整列宽" id="autofit-column" /> <input type="button" value="自动调整行高" id="autofit-row" /> <input type="button" value="切换换行" id="wrap" /> <input type="button" value="切换换行并自动调整" id="toggle-wrap-autoFit" /> </div> </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; } input { display: block; width: 150px; } .option-row { font-size: 14px; padding: 5px; } input { padding: 4px 6px; margin-bottom: 6px; margin-right: 5px; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }