4
2

More than 3 years have passed since last update.

GoでExcelをcatするコマンドラインツールを作ってみた

Posted at

要約

  • 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文化とは付き合い方を考える必要がある
  • プロパティ情報とか色々取れたら便利なのかしら
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2