ASC

Spread provides the ASC function to convert full-width(double-byte) characters to half width(single-byte) characters.

The demo is being dynamically compiled to support real-time code editing... For quicker access to features, switch to the "JavaScript" tab for a smoother experience! :)
Description
app.component.ts
index.html
app.component.html
styles.css
Copy to CodeMine

Syntax

    =ASC(text)

text - (Required) The text or a reference to a cell that contains the text you want to change. If text does not contain any full-width letters, text is not changed.

Usage Notes

This function can convert full width letter symbol, letter and katakana to half width characters.

Support Case

Support Item Example Character Target Character
Full-width Letter SpreadJS SpreadJS
Full-width symbol !@#$ !@#$
Full-width katakana グループシテイ グループシテイ
Syntax text - (Required) The text or a reference to a cell that contains the text you want to change. If text does not contain any full-width letters, text is not changed. Usage Notes This function can convert full width letter symbol, letter and katakana to half width characters. Support Case Support Item Example Character Target Character Full-width Letter SpreadJS SpreadJS Full-width symbol !@#$ !@#$ Full-width katakana グループシテイ グループシテイ
import { Component, NgModule, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { SpreadSheetsModule } from '@mescius/spread-sheets-angular'; import GC from '@mescius/spread-sheets'; import './styles.css'; @Component({ selector: 'app-component', templateUrl: 'src/app.component.html' }) export class AppComponent { spread: GC.Spread.Sheets.Workbook; hostStyle = { width: '100%', height: '100%', overflow: 'hidden', float: 'left' }; constructor () { } initSpread ($event: any) { let spread = this.spread = $event.spread; spread.suspendPaint(); let sheet0 = spread.getSheet(0); sheet0.name("ASC usage"); this.setUsage(sheet0); let sheet1 = spread.getSheet(1); sheet1.name("ASC table"); this.setASCformulaInSheet(sheet1); spread.resumePaint(); } setUsage (sheet: GC.Spread.Sheets.Worksheet) { this.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"); this.setFormula(sheet); } setTable (sheet: GC.Spread.Sheets.Worksheet) { 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); } setFormula (sheet: GC.Spread.Sheets.Worksheet) { sheet.setFormula(3, 4, "=ASC(D4)"); sheet.setFormula(4, 4, "=ASC(D5)"); sheet.setFormula(5, 4, "=ASC(D6)"); sheet.setFormula(6, 4, "=ASC(D7)"); sheet.setFormula(7, 4, "=ASC(D8)"); sheet.setFormula(8, 4, "=ASC(D9)"); sheet.setFormula(9, 4, "=ASC(D10)"); sheet.setFormula(10, 4, "=ASC(D11)"); } setASCformulaInSheet (sheet: GC.Spread.Sheets.Worksheet) { let charCode = 12449; let rowIndexOffset = 1; sheet.addSpan(0, 0, 1, 4); sheet.setValue(0, 0, "Full width katakana:"); this.setASC(sheet, rowIndexOffset, charCode, 90); //FULL width katakana charCode = 65281; rowIndexOffset += 6; sheet.addSpan(6, 0, 1, 4); sheet.setValue(6, 0, "Full width symbol and letter:"); this.setASC(sheet, rowIndexOffset, charCode, 94); // FW symbol and letter } setASC (sheet: GC.Spread.Sheets.Worksheet, rowIndexOffset: number, charCodeStart: number, count: number) { 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; sheet.setFormula(rowIndex, columnIndex, `=ASC("${str}")`); } } } @NgModule({ imports: [BrowserModule, SpreadSheetsModule], declarations: [AppComponent], exports: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } enableProdMode(); // Bootstrap application with hash style navigation and global services. platformBrowserDynamic().bootstrapModule(AppModule);
<!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$/en/angular/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- Polyfills --> <script src="$DEMOROOT$/en/angular/node_modules/core-js/client/shim.min.js"></script> <script src="$DEMOROOT$/en/angular/node_modules/zone.js/fesm2015/zone.min.js"></script> <!-- SystemJS --> <script src="$DEMOROOT$/en/angular/node_modules/systemjs/dist/system.js"></script> <script src="systemjs.config.js"></script> <script> // workaround to load 'rxjs/operators' from the rxjs bundle System.import('rxjs').then(function (m) { System.import('@angular/compiler'); System.set(SystemJS.resolveSync('rxjs/operators'), System.newModule(m.operators)); System.import('$DEMOROOT$/en/lib/angular/license.ts'); System.import('./src/app.component'); }); </script> </head> <body> <app-component></app-component> </body> </html>
<div class="sample-tutorial"> <gc-spread-sheets [hostStyle]="hostStyle" (workbookInitialized)="initSpread($event)"> <gc-worksheet> </gc-worksheet> <gc-worksheet> </gc-worksheet> </gc-spread-sheets> </div>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }
(function (global) { System.config({ transpiler: 'ts', typescriptOptions: { tsconfig: true }, meta: { 'typescript': { "exports": "ts" }, '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { 'core-js': 'npm:core-js/client/shim.min.js', 'zone': 'npm:zone.js/fesm2015/zone.min.js', 'rxjs': 'npm:rxjs/dist/bundles/rxjs.umd.min.js', '@angular/core': 'npm:@angular/core/fesm2022', '@angular/common': 'npm:@angular/common/fesm2022/common.mjs', '@angular/compiler': 'npm:@angular/compiler/fesm2022/compiler.mjs', '@angular/platform-browser': 'npm:@angular/platform-browser/fesm2022/platform-browser.mjs', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/fesm2022/platform-browser-dynamic.mjs', '@angular/common/http': 'npm:@angular/common/fesm2022/http.mjs', '@angular/router': 'npm:@angular/router/fesm2022/router.mjs', '@angular/forms': 'npm:@angular/forms/fesm2022/forms.mjs', 'jszip': 'npm:jszip/dist/jszip.min.js', 'typescript': 'npm:typescript/lib/typescript.js', 'ts': './plugin.js', 'tslib':'npm:tslib/tslib.js', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js', '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-angular': 'npm:@mescius/spread-sheets-angular/fesm2020/mescius-spread-sheets-angular.mjs', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'ts' }, rxjs: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, "node_modules/@angular": { defaultExtension: 'mjs' }, "@mescius/spread-sheets-angular": { defaultExtension: 'mjs' }, '@angular/core': { defaultExtension: 'mjs', main: 'core.mjs' } } }); })(this);