SpreadJS 9J クライアントサイドExcelIOサンプル

by spradjs samples

HTML

<link rel="stylesheet" href="https://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css">
<script src="https://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>
<script src="https://cdn.grapecity.com/spreadjs/9201610/scripts/interop/gc.spread.excelio.9.20161.0.min.js"></script>
<script src="https://fastcdn.org/FileSaver.js/1.1.20151003/FileSaver.min.js"></script>
<script src="https://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js"></script>
<!-- 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>

CSS

* {
  font-family: "メイリオ", "Meiryo", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "MS Pゴシック", "MS P Gothic", Verdana, Arial, Helvetica, sans-serif;
}

div.functions {
  width: 590px;
  border: gray solid 1px;
  margin: 5px 0px 5px 0px;
  padding: 5px 5px 5px 5px;
}

input.buttons {
  width: 110px;
}

JavaScript

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) {
    // ファイルオープン失敗時の処理
   ...