Photoshop Extensionの開発29 エクステンションでエクセルデータを読み込む
エクセルの表と照らし合わせながらAdobeのソフトでレイアウトを決めたりデザインする作業というのも世の中沢山あるかと思います。というわけで今回はxlsデータをExtensionで読み込んでパネル上に表示させたいと思います。
今回xlsデータの読み込みのためにxlsxモジュールをNodeから使用することにしました。という事でまずはインストール。
インストールしましたらCEPの環境もNode.jsが使用できるようにmanifest.xml等の調整もします。
また今回サンプルのエクセルデータとしてこちらのページから第3章の国民経済計算のエクセルデータを使用しました。
まずはxlsxを読み込みましょう。
次にエクセルデータのパスを読み込ませないといけないのですが今回ウインドウからエクセルデータを選択してパスを読み込むことにします。
次にxlsxでパスを読み込みます。
オブジェクト形式でエクセルデータを読み込んでくれます。まずワークシートがSheetsプロパティに格納されていて各種ワークシートの中にセルの情報がオブジェクト形式で縦列順に格納されています。具体的には以下のようにワークシート3-2の国内総生産の表を読み込んでクロームで表示されるコンソールデータが以下になります。
使用するエクセルデータの表。
クロームで表示されたコンソールのデータ。一列目の縦の列からA,B,C,D….と表示されます。横列ではないので注意してください。全ての縦列が同じオブジェクトにまとめて格納されているのでこのままだと各種データにアクセスしずらいと思いますので各種列事にまとめます。まず上記のワークシートにアクセスするためにワークシート名3-2(1)プロパティにアクセスします。そこからforEachで各キーの名前を取り出して頭文字のA,B,Cといったアルファベットだけ取得してアルファベットをMapオブジェクトのキーとして追加。そのキーに各列のオブジェクトをそのまま代入。これで各A,B,C列のMapオブジェクトに各種セルデータの格納されたプロパティをMapオブジェクトに代入していきます。結果的にMapオブジェクトの中にMapオブジェクトができます。ややこしいですね。すいません。詳しくは以下を参照
これで各列事にデータが整理されます。
datalistオブジェクトの中に各A,Bの縦列のMapオブジェクトが格納されていてそのMapオブジェクトの中にA1,A3といった各セルの情報が格納されたMapオブジェクトが入っている状態。