数据源模式

用户可以为一个添加表提供数据源模式。 SpreadJS 集算表允许用户提供一个数据源模式,该模式定义了要添加的表的结构和属性。 用户还可以使用数据源架构为列分配不同的 dataTypedataPattern/dataMap 以了解数据在表格中的呈现方式。

该模式包含以下属性。 属性 类型 描述 type string 任何 "json"、"csv"、"xml"、"columnJson"。 countPath string 数据读取器使用它来获取数据源集合长度。 dataPath string 数据读取器使用此功能来获取解析后的数据源集合。 columns GC.Data.IColumnCollection 数据源表的列定义。它的键是列名,它的值是列的信息,其中包含dataType、dataPattern和dataMap。 dataType是 "string", "number", "boolean", "object", "array" 或 "date"中的任何一种,它是原始值的实际数据类型,对Date有用,因为Date在JSON数据中是一个字符串,需要进行转换。 dataPattern是一个字符串,用于将字符串解析为值,例如日期字符串的格式化 "dd/MM/yyyy",布尔字符串的真假值对 "Yes|No",数字字符串的小数点分隔符","。 dataMap是一个简单的地图,用于显示更有意义的原始值,它的键可以是一个数字或字符串,它的值可以是一个数字、字符串或日期。 dataName 表示来自数据源的原始数据字段的名称,使用该属性可以将原始字段名映射到数据管理器中的新字段名。 这是type、dataPath和countPath的示例代码。 这是dataType和dataMap的示例代码。 这是dataPattern的示例代码。 这是dataName的示例代码。属性列的键表示数据管理器中的字段名,dataName表示原始数据源字段名。
/*REPLACE_MARKER*/ /*DO NOT DELETE THESE COMMENTS*/ window.onload = function() { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 0 }); initSpread(spread); }; function initSpread(spread) { spread.suspendPaint(); spread.options.autoFitType = GC.Spread.Sheets.AutoFitType.cellWithHeader; //init a data manager var tableName = "Order"; var baseApiUrl = getBaseApiUrl(); var apiUrl = baseApiUrl + "/" + tableName; var dataManager = spread.dataManager(); var myTable = dataManager.addTable("myTable", { remote: { read: { url: apiUrl } }, schema: { columns: { OrderId: {dataName: "Id"}, OrderDate: {dataType: "date"}, RequiredDate: {dataType: "date"}, ShippedDate: {dataType: "date"}, ShipVia: {dataMap: {1: "Speedy Express", 2: "United Package", 3: "Federal Shipping"}} } } }); //init a table sheet var sheet = spread.addSheetTab(0, "TableSheet1", GC.Spread.Sheets.SheetType.tableSheet); sheet.options.allowAddNew = false; //hide new row //bind a view to the table sheet myTable.fetch().then(function() { var style = { formatter: 'MM/dd/yyyy' }; var style2 = { formatter: 'Ship To: {{=CONCAT(@."ShipAddress", ", ", @."ShipCity")}}' }; var view = myTable.addView("myView", [ { value: "OrderId", width: 60 }, { value: "CustomerId",caption:"Customer", width: 100 }, { value: "ShipName", width: 200 }, { value: "OrderDate", width: 120, style: style }, { value: "ShippedDate", width: 120, style: style }, { value: "ShipVia", width: 120 }, { value: "=[@]",caption:"Ship Address",style:style2, width: 350 }, ]); sheet.setDataView(view); }); spread.resumePaint(); } function getBaseApiUrl() { return window.location.href.match(/http.+spreadjs\/SpreadJSTutorial\//)[0] + 'server/api'; }
<!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"> <!-- Promise Polyfill for IE, https://www.npmjs.com/package/promise-polyfill --> <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script> <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-tablesheet/dist/gc.spread.sheets.tablesheet.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" class="sample-spreadsheets"></div> <div id="optionContainer" class="optionContainer"> </div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .sample-spreadsheets { width: 100%; height: 100%; overflow: hidden; float: left; }