村正

概要

Excel/CSVのシートから、空行で区切られた複数の表を検出し、それぞれをタイトル行、ヘッダー行、データ行に分けて読み取るJavaSrcipt用ツール。

印刷物の表のようなレイアウトでデータが配置されたシートでは、1枚に複数の表が並び、表の上にタイトルが書かれていることが多い(いわゆるネ申エクセル)。 村正は次のルールで、こうしたシートを機械が扱える矩形のデータとして読み込む:

  • 空行で区切られた行のまとまりを、表の候補(ブロック)とみなす
  • ブロックの先頭行が、ブロック内の最大列数より少なければタイトル行とみなす
  • タイトルの次の行をヘッダー行とみなす。正規表現でヘッダー行を指定することも、ヘッダーなしと指定することもできる

開発経緯

資源評価事業をドメインモデリングに基づいてアプリケーション化する三日月宗近プロジェクトで、査読者用のデータアップロード機能が必要だった。 このような外部との連絡部分では、自アプリのモデルを外部のデータ型式から守るためのいわゆる「腐敗防止層」が必要となる。 腐敗防止層のうち、Excelファイルからデータを取り出す部分を、汎用パッケージとして切り出した。

現在の状態

npmで公開中(“muramasa” ではまずいのでさすがにまともな名前をつけた): @rindrics/tblparse

基本的にはnpmパッケージだが、GUIから使えるデモサイトを下記でホストしている:

利用技術

React, SheetJS, TypeScript