SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

高機能JavaScriptスプレッドシート部品「SpreadJS」の活用(AD)

Excelの資産を無駄にしない──SpreadJS「レポートシート」で実現するWeb帳票とPDF出力

  • X ポスト
  • このエントリーをはてなブックマークに追加

 メシウス株式会社が提供するJavaScriptライブラリ「SpreadJS」は、Webブラウザ上でExcelライクなスプレッドシートを構築・操作できる高機能なUIコンポーネントです。従来のスプレッドシート機能に加え、「SpreadJS V17.1J」では新たに「レポートシート」機能が追加され、従来Excelで作成していた帳票類をWeb上で再現・出力するための強力な仕組みが整いました。本記事では、このレポートシート機能を活用し、Excel帳票のWeb化とPDF出力をどのように実現できるのかを解説します。テンプレートベースの帳票作成やデータバインドといったポイントを押さえつつ、HTML+JavaScriptで構築する具体的な実装手順を見ていきましょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

対象読者

  • Excelベースの帳票をそのままWebに移行したいと考えている方
  • フロントエンドのHTML+PureJSで帳票レイアウトを実装したい方
  • バックエンドと連携して動的に帳票を表示・印刷したい方

必要な環境

 本記事では、次の環境でSpreadJSのレポートシート機能を動作確認しています。

  • Windows 11 64bit版
  • SpreadJS 18.1.4
  • Node.js 22.15.0 64bit版
  • Google Chrome 136.0.7103.93 64bit版
  • Visual Studio Code 1.99.3

 サンプルコードは、公式の技術記事をもとに構築しています。手元の環境で再現する際には、下記記事からコードをコピーしてご活用ください。

 SpreadJSは、公式サイトからトライアル版をダウンロードして利用できます。

 また、今回の実装では簡易的なAPIサーバとして、json-server(バージョン 1.0.0-beta.3)を使用します。設定方法などの詳細は、メシウス株式会社が公開している技術記事に記載されているため、あわせてご確認ください。

SpreadJSで帳票をWeb表示する方法

 ここからは、SpreadJSのレポートシート機能を使ってExcelライクな帳票テンプレートを作成し、Web上に表示するまでの流れを解説します。

1. データとサーバを準備

 まずは、帳票にバインドする元データをJSON形式で用意します。今回は、次のような10件の社員情報を含む社員一覧表(employees.json)を作成します。

employees.json
{
    "employees": [
      { "id": "E001", "name": "田中 太郎", "department": "営業部", "position": "主任", 
"hireDate": "2018-04-01" },
      { "id": "E002", "name": "鈴木 花子", "department": "総務部", "position": "係長", "hireDate": "2016-09-15" },
      { "id": "E003", "name": "佐藤 健",   "department": "技術部", "position": "エンジニア", "hireDate": "2020-01-10" },
      { "id": "E004", "name": "山本 美咲", "department": "経理部", "position": "主任", "hireDate": "2019-07-20" },
      { "id": "E005", "name": "中村 翔",   "department": "営業部", "position": "マネージャー", "hireDate": "2015-03-01" },
      { "id": "E006", "name": "小林 杏奈", "department": "人事部", "position": "スタッフ", "hireDate": "2021-11-11" },
      { "id": "E007", "name": "伊藤 健介", "department": "技術部", "position": "エンジニア", "hireDate": "2022-02-28" },
      { "id": "E008", "name": "斉藤 結衣", "department": "広報部", "position": "主任", "hireDate": "2017-06-12" },
      { "id": "E009", "name": "高橋 陽介", "department": "経理部", "position": "課長", "hireDate": "2014-01-05" },
      { "id": "E010", "name": "森田 未来", "department": "営業部", "position": "スタッフ", "hireDate": "2023-04-17" }
}

 続いて、JSONデータをAPIとして利用するために、json-serverを使って簡易APIサーバを起動します。次のコマンドを実行してください。

json-server employees.json -p 3000
図1:json-server起動画面
図1:json-server起動画面

 ブラウザで「http://localhost:3000/employees」にアクセスし、JSONデータが正しく表示されれば準備完了です。

2. SpreadJSデザイナで帳票テンプレートを作成

 製品に付属しているSpreadJSデザイナ(デスクトップアプリ)を起動し、帳票のレイアウトを作成します。初期状態では通常のスプレッドシートになっているため、まずは「挿入」メニューから「レポートシート」を選択し、新しくレポートシートを追加しましょう。シート名が「Report1」になれば、レポートシートを追加できています。

図2:レポートシートに切り替え
図2:レポートシートに切り替え

 続いて、左メニューの「データソース」から「テーブルの追加」を選択し、次のように設定します。

  • テーブル名:employees
  • 読み込み方法:GET(そのまま)
  • URL:http://localhost:3000/employees

 設定は自動保存されるため、特別な操作は不要です。

図3:データソース テーブル追加設定画面
図3:データソース テーブル追加設定画面

 次に、レポートシートへ戻り、データのキーを任意のセルにドラッグ&ドロップで配置します。今回のような一覧表形式の場合、すべてのセル型は右ペインから「リスト(テーブル)」に設定してください。

図4:一覧表示したい項目のセル型は「リスト」に設定
図4:一覧表示したい項目のセル型は「リスト」に設定

 ヘッダー行には「社員ID」「氏名」「部署」「役職」「入社日」などの項目名を記入します。フォントサイズや罫線などのスタイルは、Excelと同様の操作感で編集可能です。

3. プレビューで帳票を確認して保存

 「デザイン」メニュー内の「プレビュー」ボタンをクリックすると、データが展開された状態で帳票の完成イメージを確認できます。

図5:SpreadJS Designerのプレビュー画面
図5:SpreadJSデザイナのプレビュー画面

 プレビューで問題がなければ、ファイルを「.sjs形式」で保存します。このファイルは、Webアプリ側でテンプレートとして読み込むために使用します。

4. Webで表示準備

 作成した帳票テンプレートをWebページ上で表示するための準備をしていきます。

 プロジェクト構成を次のように配置します。その他の詳細なファイル構成は、技術記事を参考にしてください。

図6:SpreadJSプロジェクト構成例(テンプレート、スクリプト、スタイル定義)
図6:SpreadJSプロジェクト構成例(テンプレート、スクリプト、スタイル定義)

 帳票テンプレートを読み込んでレポートシートを実行しているのは、「script/app.js」内の次の箇所です。

script/app.js
const res = fetch('reports/employees.sjs').then((response) => response.blob())
    .then((myBlob) => {
        spread.open(myBlob, () => {
            console.log(`読み込み成功`);
            reportSheet = spread.getSheetTab(0);

            // レポートシートのオプション設定
            reportSheet.renderMode('Preview');
            reportSheet.options.printAllPages = true;

            // レポートシートの印刷設定
            var printInfo = reportSheet.printInfo();
            printInfo.showBorder(false);
            printInfo.zoomFactor(1);
            reportSheet.printInfo(printInfo);
        }, (e) => {
            console.log(`***ERR*** エラーコード(${e.errorCode}) : ${e.errorMessage}`);
        });
    });

 ここでは、「.sjs」形式で設計された帳票テンプレートがWebアプリケーション上に展開されています。これにより、ユーザーがブラウザ上で帳票を閲覧できる状態になります。

5. Webページで帳票を表示

 index.html を右クリックして「Open with Live Server」を選択すると、ブラウザ上で帳票が表示されます。JSONデータがテンプレートにバインドされ、一覧表として表示されていれば成功です。

図7:Webページで表示確認
図7:Webページで表示確認

 このように、SpreadJSとレポートシート機能を活用すれば、ノーコードで帳票テンプレートを設計し、JavaScriptのみでWeb帳票を構築することができます。

次のページ
レポートシートを利用するメリット

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
高機能JavaScriptスプレッドシート部品「SpreadJS」の活用連載記事一覧

もっと読む

この記事の著者

水無瀬 あずさ(ミナセ アズサ)

 現役エンジニア兼フリーランスライター。PHPで社内開発を行う傍ら、オウンドメディアコンテンツを執筆しています。得意ジャンルはIT・転職・教育。個人ゲーム開発に興味があり、最近になってUnity(C#)の勉強を始めました。おでんのコンニャクが主役のゲームを作るのが目標です。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:メシウス株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21789 2025/07/30 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング