Text Orientation

Text in spreadsheets can be rotated by different degrees in SpreadJS. Excel spreadsheets can be imported and exported while keeping their text rotation, and developers can utilize JavaScript code to set rotation and even vertical text for cells in the workbook.

Description
app.vue
index.html
Copy to CodeMine

You can create a style and set a rotation using textOrientation as follows:

    var style = new GC.Spread.Sheets.Style();
    style.textOriention = 30;

The rotation angle supports -90 to +90 degrees.

When setting the rotation on a cell value the border and background color will rotate to the corresponding angle.

You can create a style and set a rotation using textOrientation as follows: The rotation angle supports -90 to +90 degrees. When setting the rotation on a cell value the border and background color will rotate to the corresponding angle.
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> </gc-spread-sheets> <div class="options-container"> <div class="option-row"> <p>Select a cell, such as G5 (“Math”), then change the Angle to ‘30’</p> <label id="Text Oriention" for="textOriention">Angle(-90<= Angle <=90)'</label> <input type="text" id="textOriention" v-model="textOriention" @change="textOrientionChange" /> <input type="button" value="Set TextOriention" id="btnTextOriention" @click="setTextOriention" /> </div> <div class="option-row"> <label id="Text Oriention" for="textOriention">Set VerticalText</label> <input type="button" value="Set verticalText" id="btnVerticalText" @click="setVerticalText" /> </div> </div> </div> </template> <script setup> import '@mescius/spread-sheets-vue' import { ref } from "vue"; import GC from "@mescius/spread-sheets"; const textOriention = ref(0); const spreadRef = ref(null); function textOrientionChange(e) { textOriention.value = parseInt(e.target.value); } function setVerticalText() { let sheet = spreadRef.value.getActiveSheet(); if (sheet) { let cell = sheet.getCell(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex()); cell.isVerticalText(!cell.isVerticalText()); } } function setTextOriention() { let sheet = spreadRef.value.getActiveSheet(); if (sheet) { let cell = sheet.getCell(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex()); let rotationValue = textOriention.value; if (-90 <= rotationValue && rotationValue <= 90) { cell.textOrientation(rotationValue); } else { alert("please input correct rotation angle") } } } function initSpread(spread) { spreadRef.value = spread; spread.fromJSON(jsonData); let sheet = spread.getSheet(3); sheet.getCell(0, 2).textDecoration(GC.Spread.Sheets.TextDecorationType.lineThrough); sheet.getCell(0, 3).textDecoration(GC.Spread.Sheets.TextDecorationType.overline); sheet.getCell(0, 4).textDecoration(GC.Spread.Sheets.TextDecorationType.underline); } </script> <style scoped> .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; } input { padding: 4px 6px; } input[type=button] { margin-top: 6px; display: block; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } </style>
<!DOCTYPE html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>SpreadJS VUE</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue3/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/vue3/node_modules/systemjs/dist/system.src.js"></script> <script src="$DEMOROOT$/spread/source/data/textOriention.js" type="text/javascript"></script> <script src="./systemjs.config.js"></script> <script src="./compiler.js" type="module"></script> <script> var System = SystemJS; System.import("./src/app.js"); System.import('$DEMOROOT$/en/lib/vue3/license.js'); </script> </head> <body> <div id="app" style="height: 100%;"></div> </body> </html>
(function (global) { SystemJS.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, packageConfigPaths: [ './node_modules/*/package.json', "./node_modules/@mescius/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json" ], map: { '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js', 'vue': "npm:vue/dist/vue.esm-browser.js", 'tiny-emitter': 'npm:tiny-emitter/index.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', "systemjs-babel-build": "npm:systemjs-plugin-babel/systemjs-babel-browser.js", }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, '*.vue': { loader: "../plugin-vue/index.js" } } }); })(this);