Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

「Wijmo(ウィジモ) 5」のExcelライクスプレッドシートFlexSheet

ECMAScript 5に準拠した高速・軽量なJavaScript UIライブラリ「Wijmo 5」の活用 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

Excelファイルの入出力

 FlexSheetのExcelファイル入出力機能を使うと、Excelファイルの内容をFlexSheetに読みこんだり、FlexSheetの内容をExcelファイルに書き出したりできます。この処理はWebブラウザ上のJavaScript処理だけで実現でき、Webサーバーなどに追加のアプリを導入する必要はありません。

 Excelファイル入出力機能を利用するには、WijmoのExcel関連機能を提供するモジュールであるwijmo.grid.xlsx.min.jsとwijmo.xls.min.js、およびそれらが依存するJSZipのライブラリを参照する必要があります。

リスト7 Excel入出力に必要な追加ライブラリ参照
<!-- Wijmo Excelサポート -->
<script src="http://cdn.wijmo.com/5.20153.117/controls/wijmo.grid.xlsx.min.js" type="text/javascript"></script>
<script src="http://cdn.wijmo.com/5.20153.117/controls/wijmo.xlsx.min.js" type="text/javascript"></script>
<!-- JSZip library(Excelサポートに必要) -->
<script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>

Excelファイルの読み込みはHTML5のFile APIと組み合わせて実現

 FlexSheetに読み込むExcelファイルはHTML5のFile APIを利用して指定します。まずファイルを指定するinputタグと、読み込み処理を行うボタンをWebページにリスト8のように記述します。

リスト8 Excelファイルを読み込むWebページ記述(005_wijmo_flexsheet5.html)
<!-- ファイルを読み込むinputタグ -->
<input type="file" id="importFile"
    accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<!-- 読み込みボタン -->
<button ng-click="doLoadXlsxFile()">Excelファイルを読み込み</button>

 読み込み処理の実体はリスト9のようにします。

リスト9 Excelファイルの読み込み処理(005_wijmo_flexsheet5.html)
// FlexSheetオブジェクトとファイル指定オブジェクトを取得 ...(1)
var flexSheet1 = $scope.flexSheet1;
var importFile = document.getElementById("importFile");

// FileReaderを生成 ...(2)
var reader = new FileReader();
// ファイル読み込み完了時にFlexSheetのloadメソッドを実行 ...(3)
reader.onload = function (e) {
    flexSheet1.load(reader.result);
};

// ファイル指定がある場合はファイル読み込み開始 ...(4)
if (importFile.files[0]) {
    reader.readAsArrayBuffer(importFile.files[0]);
}

 (1)でFlexSheetとファイルを指定するinputタグのオブジェクトを取得します。(2)でファイル読み込み機能を提供するFile APIのFileReaderオブジェクトを生成し、(3)でファイル読み込み完了時の処理を定義します。読み込み完了時点でFileReaderオブジェクトのresultプロパティにファイル内容が格納されるので、それを引数にFlexSheetオブジェクトのloadメソッドでファイル内容を読み込みます。(4)で実際のファイル読み込みを開始します。

 リスト8、9を実行すると、Excelファイルを指定してFlexSheetに読み込ませることができます。

図7 Excelファイルを読み込んでFlexSheetに表示(005_wijmo_flexsheet5.html)
図7 Excelファイルを読み込んでFlexSheetに表示(005_wijmo_flexsheet5.html)

Excelファイルの保存はsaveメソッドで

 Excelファイル保存の処理はシンプルで、ファイル名を引数に指定してFlexSheetオブジェクトのsaveメソッドを実行します。

リスト10 Excelファイルの保存処理(006_wijmo_flexsheet6.html)
var flexSheet1 = $scope.flexSheet1;
flexSheet1.save("exported.xlsx");

 リスト10を実行すると、FlexSheetに任意に入力した内容をExcelファイルに保存できます。

図8 FlexSheetの内容をExcelファイルに保存(006_wijmo_flexsheet6.html)
図8 FlexSheetの内容をExcelファイルに保存(006_wijmo_flexsheet6.html)

まとめ

 本記事では、グレープシティのJavaScriptライブラリWijmoで利用できるようになった、スプレッドシート部品FlexSheetの特徴や利用法を紹介しました。FlexSheetはWijmo 5のグリッド部品FlexGridの拡張クラスとして定義され、Wijmo Enterpriseと統合されているため、Wijmo以外のライブラリを使い分けることなくスプレッドシート機能を実現できます。本記事ではFlexSheetの基本的な記述方法のほか、データの初期設定やソート/フィルタ機能の利用について紹介しました。またFlexSheetのExcelファイル入出力機能は、Webサーバーなど外部ツールの支援を受けずJavaScriptだけでExcelファイルを入出力できるため、環境を問わず利用できるのが魅力といえます。

参考資料



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:ECMAScript 5に準拠した高速・軽量なJavaScript UIライブラリ「Wijmo 5」の活用

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5