window.onload = function() { //初期化 var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss")); var sheet = spread.getActiveSheet(); // 行列サイズの設定 var ROW_HEIGHT = 30; var COLUMN_WIDTH = 150; sheet.defaults.rowHeight = ROW_HEIGHT; sheet.defaults.colWidth = COLUMN_WIDTH; // 行数の設定 var ROW_NUM = 20; sheet.setRowCount(ROW_NUM); // シートのスタイル設定 var basicFont = "normal normal 12px Meiryo"; var defaultStyle = sheet.getDefaultStyle(); defaultStyle.font = basicFont; defaultStyle.themeFont = basicFont; defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center; defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center; sheet.setDefaultStyle(defaultStyle); sheet.suspendPaint(); // 各セルに試験用のダミーデータを設定します var i; var j; var rowCount = sheet.getRowCount(); var colCount = sheet.getColumnCount(); for (i = 0; i < rowCount; i = i + 1) { for (j = 0; j < colCount; j = j + 1) { var value = (i + 1) * (j + 1); sheet.getCell(i, j).text("テスト" + value.toString()); } } // 注:エクスポートするファイルに行列のサイズを反映する場合は // 個別に行列のサイズを設定します for (i = 0; i < rowCount; i = i + 1) { sheet.setRowHeight(i, ROW_HEIGHT); } for (j = 0; j < colCount; j = j + 1) { sheet.setColumnWidth(j, COLUMN_WIDTH); } // スクロールバーの設定 spread.options.showVerticalScrollbar = false; spread.options.showHorizontalScrollbar = false; // タブの設定 spread.options.tabStripVisible = false; sheet.resumePaint(); } //インポートボタン押下時の処理 function OnImportButtonClicked() { //シートの取得 var spread = GC.Spread.Sheets.findControl(document.getElementById('ss')); var sheet = spread.getActiveSheet(); //ExcelIOインスタンスの生成 var excelIo = new GC.Spread.Excel.IO(); //ファイルの取得 var excelFile = document.getElementById("fileDemo").files[0]; // エクセルファイルインポート処理 excelIo.open(excelFile, function(json) { // ファイルオープン成功時の処理 var spreadObj = JSON.parse(json); spread.fromJSON(spreadObj); }, function(e) { // ファイルオープン失敗時の処理 console.log(e); }); } //エクスポートボタン押下時の処理 function OnExportButtonClicked() { //保存ファイル名の取得 var fileName = document.getElementById("exportFileName").value; if (fileName.substr(-5, 5) !== '.xlsx') { fileName += '.xlsx'; } //ExcelIOインスタンスの生成 var excelIo = new GC.Spread.Excel.IO(); //jsonデータの取得 var spread = GC.Spread.Sheets.findControl(document.getElementById('ss')); var json = JSON.stringify(spread.toJSON()); // ナレッジ情報39521を適用します // http://www.grapecity.com/tools/support/kb/?id=39521 var spreadObj = JSON.parse(json); for (var sheetName in spreadObj.sheets) { var sheet = spreadObj.sheets[sheetName]; if ((!sheet.rows || sheet.rows.length === 0)) { sheet.rows = [{}]; } } json = JSON.stringify(spreadObj); // エクセルファイルエクスポート処理 excelIo.save(json, function(blob) { // ファイル書き出し成功時の処理 saveAs(blob, fileName); }, function(e) { // ファイル書き出し失敗時の処理 console.log(e); }); }
<!-- SpreadJS Markup --> <div id="ss" style="width: 600px; height: 300px; border: 1px solid gray;"></div> <div class="functions"> <input style="width:354px;" type="file" name="files[]" multiple id="fileDemo" accept=".xlsx,.xls" /> <input class="buttons" type="button" id="loadExcel" value="インポート" onclick="OnImportButtonClicked();"> </div> <div class="functions"> <input style="width:350px;" type="text" id="exportFileName" placeholder="Export file name" value="export.xlsx" /> <input class="buttons" type="button" id="saveExcel" value="エクスポート" onclick="OnExportButtonClicked();" /> </div>