要約
- GoでExcelをcatするツールを作ってみた
-
xlctl ls エクセルファイル名
でシートの一覧を出す -
xlctl cat エクセルファイル名 シート名
でシートをcatする - これでExcelをターミナルから操作してパイプでつないで色々できる
背景
メモだったりオブジェクト組み合わせて画像編集したり、表計算以外にもExcelは人気です
(それについては賛否両論あると思いますが、ここでは触れません)
ワタシみたいなコマンドライン野郎にはExcelって煩わしい(使わないわけではない)ので、
コマンドラインでgrepableに操作したいなとは昔から思ってました
作ってみた
github.com/tealeg/xlsx
という便利なライブラリで簡単につくれました
セル情報の書き出しを行う実装はこんな感じで、1rowの中の各cellの値をforData変数に突っ込んで、最後にjoinして出力
func printCell(sheet *xlsx.Sheet) {
for _, row := range sheet.Rows {
var rowData []string
for _, cell := range row.Cells {
rowData = append(rowData, cell.String())
}
fmt.Println(strings.Join(rowData, " "))
}
}
昔を思い出した
昔、設計書をExcelで作る文化のプロジェクトに参加してました
Excelに検討中_いつか削除
みたいなシートがあって、
こういう意味不明シートを探せ!
みたいな指示が飛んだのを思い出しました
当時はVBA作った気がしますが、今回作った
xlctl
をforループで回したりすると一瞬でできますね
結論
- Excel文化とは付き合い方を考える必要がある
- プロパティ情報とか色々取れたら便利なのかしら