DBCS 函数

SpreadJS 提供的 DBCS 函数可将半角(单字节)字符转换为全角(双字节)字符,支持转换拉丁字母、符号和片假名,适用于日语文档处理、地址格式统一等需要对字符宽度进行标准化的场景。

概述 本 Demo 展示了 DBCS 函数的使用方法,包括实际应用场景和字符转换对照表。Demo 通过两个工作表分别展示:第一个工作表演示 DBCS 函数在实际业务中的应用(姓名注音、地址、电话号码、邮政编码),第二个工作表展示了各类半角字符转换到全角的效果。 实现思路 创建两个工作表,分别用于展示实际应用和字符转换表 第一个工作表通过表格展示 DBCS 函数在姓名注音、地址、电话号码、邮政编码等场景中的应用 第二个工作表批量生成 ASCII 字符(0x0020 起始)和半角片假名(0x30a1 起始)的转换对照表 使用公式 =DBCS(单元格引用) 或 =DBCS("字符") 实现转换 代码解析 设置实际应用场景 这段代码在第一个工作表中设置表格结构和示例数据,展示了 DBCS 函数的实际应用场景,包括姓名注音(片假名)、地址、电话号码和邮政编码。 应用 DBCS 公式 这段代码为目标列设置 DBCS 公式,将半角字符转换为全角字符。公式引用 D 列的单元格,转换结果将显示在 E 列。 批量生成字符转换表 这段代码根据字符编码起始值批量生成 DBCS 公式。通过 String.fromCharCode() 获取字符,然后使用字符串字面量的方式设置公式,展示每个半角字符到全角字符的转换效果。 运行效果 第一个工作表 "DBCS usage" 展示实际应用场景,包含姓名注音、地址、电话号码、邮政编码等示例数据,通过 DBCS 函数自动转换为全角字符 第二个工作表 "DBCS table" 分两部分展示字符转换表:上半部分展示 ASCII 符号和字母的转换效果,下半部分展示半角片假名的转换效果 每个工作表的 E 列(或对应目标列)自动显示转换后的全角字符 API 参考 DBCS 函数 text:必填,需要转换的文本或包含文本的单元格引用。文本可以是数字、日期、字符串或布尔格式 返回值:将半角符号、字母和片假名转换为全角符号、字母、平假名后的文本 如果文本格式不正确,返回错误值 #VALUE 当语言包设置为日语或德语时,此函数称为 JIS
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); initSpread(spread); }; function initSpread (spread) { spread.suspendPaint(); let sheet0 = spread.getSheet(0); sheet0.name("DBCS usage"); setUsage(sheet0); let sheet1 = spread.getSheet(1); sheet1.name("DBCS table"); setDBCSformulaInSheet(sheet1); spread.resumePaint(); } function setUsage (sheet) { setTable(sheet); sheet.setValue(3, 2, "Furigana (pronunciation of kanji name)"); sheet.setValue(4, 2, "Address"); sheet.setValue(5, 2, "Phone number"); sheet.setValue(6, 2, "Postal code"); sheet.setValue(3, 3, "ブドウ タロウ"); sheet.setValue(4, 3, "紫山3-1-4"); sheet.setValue(5, 3, "022-777-8210"); sheet.setValue(6, 3, "981-3205"); setFormula(sheet); } function setTable (sheet) { sheet.tables.add("DBCS", 2, 2, 5, 3); sheet.setColumnWidth(2, 165); sheet.setColumnWidth(3, 165); sheet.setColumnWidth(4, 185); sheet.setRowHeight(3, 50); sheet.setRowHeight(4, 50); sheet.setRowHeight(5, 50); sheet.setRowHeight(6, 50); sheet.setValue(2, 2, "Usage"); sheet.setValue(2, 3, "Example Characters"); sheet.setValue(2, 4, "Target Characters"); var style = new GC.Spread.Sheets.Style(); style.wordWrap = true; style.hAlign = GC.Spread.Sheets.HorizontalAlign.center; style.vAlign = GC.Spread.Sheets.VerticalAlign.center; sheet.setStyle(3, 2, style); sheet.setStyle(4, 2, style); sheet.setStyle(5, 2, style); sheet.setStyle(6, 2, style); } function setFormula (sheet) { sheet.setFormula(3, 4, "=DBCS(D4)"); sheet.setFormula(4, 4, "=DBCS(D5)"); sheet.setFormula(5, 4, "=DBCS(D6)"); sheet.setFormula(6, 4, "=DBCS(D7)"); } function setDBCSformulaInSheet (sheet) { let charCode = 0x0020; let rowIndexOffset = 1; sheet.addSpan(0, 0, 1, 4); sheet.setValue(0, 0, "Half width symbols and letters:"); setDBCS(sheet, rowIndexOffset, charCode, 95); //half width symbols and letters charCode = 0x30a1; rowIndexOffset += 6; sheet.addSpan(6, 0, 1, 4); sheet.setValue(6, 0, "Half width katakana:"); setDBCS(sheet, rowIndexOffset, charCode, 90); // Half width katakana } function setDBCS (sheet, rowIndexOffset, charCodeStart, count) { let str = "", i = 0; for (i; i < count; i++) { str = String.fromCharCode(charCodeStart + i); let rowIndex = Math.floor(i / 20) + rowIndexOffset; let columnIndex = i % 20; if (str === '"') { str = '\"\"'; } sheet.setFormula(rowIndex, columnIndex, `=DBCS("${str}")`); } }
<!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" style="width:100%; height:100%;"></div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }