仕事上Excelでデータを管理したり集計したりする機会が増えてきたので、 作業を自動化できるよう、プログラムでExcelを操作する方法を調べている。
社内のメイン言語はJavaなのである程度共有しつつ、 軽く作れるようにGroovy言語を選択する。
今回は手始めとしてパスワード保護されたExcelファイルからデータを 取得する簡単なスクリプトを書いてみた。
Apache POIを使ってExcelを操作する。 ポイントはBiff8EncryptionKeyクラスを使ったパスワード入力。 パスワードを求められて入力するのではなく、あらかじめユーザーパスワード という形で設定しておく必要があるようだ。
excel_decryption_test.groovy
@Grab(group='org.apache.poi', module='poi', version='3.11') @Grab(group='org.apache.poi', module='poi-ooxml', version='3.11') import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey import org.apache.poi.hssf.usermodel.* import org.apache.poi.ss.usermodel.WorkbookFactory def XLS_PATH = 'encrypted_file.xls' Biff8EncryptionKey.setCurrentUserPassword('<パスワード>') new FileInputStream(XLS_PATH).withStream { fis -> def workbook = WorkbookFactory.create(fis) def sheet0 = workbook.getSheetAt(0) def cellData = sheet0.getRow(4).getCell(1) println 'cell data: ${cellData}' } Biff8EncryptionKey.setCurrentUserPassword(null)
GroovyでのExcel操作は下記の記事を参考にさせていただいた。 http://d.hatena.ne.jp/chofutaro/20140614/1402706120
- 作者: 丸岡孝司
- 出版社/メーカー: ラトルズ
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 68回
- この商品を含むブログ (4件) を見る