WebサービスでExcelを使おう

こんにちは! 皆さん、Excelは好きですか? 私は好き嫌いに関わらず、仕事でExcelに全く触らない日というのはほぼありません。

弊社のお客様も仕事でExcelを触る機会は多いようで、弊社のシステムがWeb化しても、Excelに対する熱い要望をいただくことが多くあります。

今回は、私の所属する 施工体制クラウド プロジェクトで、Excelライブラリを検討した時の進め方と調べたツールをご紹介します。

要件の整理

まずは要件整理から行います。
一口にExcelを扱うと言っても、何がしたいのかによって実装方法が変わります。
要件を整理すると、大体この4つに集約しました。

Excelの形で入力したい / Excelファイルを見たい

ブラウザ側の挙動に関連するこの2つの要件ですが、「本当にExcelでないとダメなのか」の見極めが重要です。 Office365 の使用OKな要件なら別ですが、それ以外でブラウザ上にExcelを表現するのは、かなりコストがかかります。
・行列に自由に入力できるテーブルがあればOK
・Excelの中身が見れればPDFやHTMLでもOK
など、要件に合わせて代替手段を検討します。

Excelファイルを出力したい

ここが最もよくある要件だと思いますので、深堀りします。 どの範囲までExcelを扱えれば良いのかをはっきりさせておくことで、ライブラリの選定時に役立ちます。

Excelファイルを取り込みたい

Excelのセル等に書かれた内容をデータとして抽出したいというものです。
近年、OCR技術の発達によってPDFや画像から精度の高い情報を取得できるため、こちらの要件は重要度が下がってきたと感じます。

余談:Officeを使えば最強では?

Microsoft Officeを使えば、Excelでできることは何でもできます。 ただ、Officeはサーバーサイドでのインストールは保証されません。(参考) また、不特定多数のアクセスがあるWebサービスとして公開すると、ライセンス違反に該当する可能性もあります。

それらをすべてクリアできたとしても、Officeをサーバーで使うのは全くオススメしません。 Windows で Excel を扱った経験上、OS や Office のバージョン、その日の機嫌(?)でトラブルが発生する Excel COM オブジェクトの扱いには大変苦労しました。

Excelを扱えるライブラリ

私のプロジェクトで調べたExcel用のライブラリを5つご紹介します。
有料のライブラリについては、公式サイト等の情報がメインになります。
また、調査を行った2023年時点の情報になります。

SheetJS

JavaScript で Excel ファイルを扱えるライブラリです。
公式サイトによると、Pro版になるとピボットテーブルなど高度な機能が取り扱い可能になります。
JavaScriptで簡単なExcelファイルを取り扱いたい場合に、手軽に使えるライブラリです。

読み込み 編集 書き込み 実行環境 コスト
xlsx:○
xls:○
セル:○
レイアウト:△(Pro版では可能)
画像:△(Pro版は可能)
オートシェイプ:×
xlsx:○
xls:○
pdf:×
ブラウザ
サーバー
無料
Pro版は有料

ClosedXML

ClosedXML は OpenXML SDK を使いやすくした.NETライブラリです。
OpenXML formatは、Excel2007以降のファイル形式で使われているフォーマットです。
無料である程度の機能が使えるため、要件が満たせるなら第1候補に挙がるライブラリだと思います。

読み込み 編集 書き込み 実行環境 コスト
xlsx:○
xls:×
セル:○
レイアウト:○
画像:○
オートシェイプ:×
xlsx:○
xls:×
pdf:×
サーバー 無料

EPPlus

EPPlusは比較的安価で高機能なExcelライブラリです。
商用利用と非商用で適用されるライセンスが異なりますのでご注意ください。
非商用の場合、無料でオートシェイプまで扱えるのはかなりお得です。

読み込み 編集 書き込み 実行環境 コスト
xlsx:○
xls:×
セル:○
レイアウト:○
画像:○
オートシェイプ:○
xlsx:○
xls:×
pdf:×
サーバー 有料
※ライセンスによる

DioDocs

DioDocsは、日本製のExcelライブラリで、xls読み書き以外はほぼ機能がそろっています。
サポートが日本語で対応してもらえる点は安心です。
開発元のメシウス社には、ブラウザでExcelライクな表現ができる SpreadJS というライブラリもあり、両方そろえれば Office365 に匹敵する環境が作れそうです。

読み込み 編集 書き込み 実行環境 コスト
xlsx:○
xls:×
セル:○
レイアウト:○
画像:○
オートシェイプ:○
xlsx:○
xls:×
pdf:○
サーバー 有料

ASPOSE.Cells

xlsの読み書きまでフォローできる、調査した中では最強のライブラリです。
海外製ですが、日本語OKなサポートフォーラムもあり、レスポンスも早いです。
.NET 以外に Java や Python 等の環境にも対応しています。
ASPOSEシリーズには、Word や PDF を扱える製品も存在しています。

読み込み 編集 書き込み 実行環境 コスト
xlsx:○
xls:○
セル:○
レイアウト:○
画像:○
オートシェイプ:○
xlsx:○
xls:○
pdf:○
サーバー 有料

まとめ

Excelを扱うライブラリは有料・無料含めて数多くあります。
高機能になればなるほど、お値段も高級になりますが、無料で使える体験版が公開されているライブラリもあります。事前に整理した要件を満たせるか、体験版で確認しましょう。
要件と予算に合ったライブラリを選択していきたいですね。

KENTEMでは、様々な拠点でエンジニアを大募集しています!
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。
recruit.kentem.jp career.kentem.jp