概述
本 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;
}