0
0

More than 3 years have passed since last update.

ExcelのCRUD操作ができるツールを作ってみた #golang

Posted at

はじめに

excelizeという便利なライブラリを見つけたので、cobraと組み合わせてコマンドラインツールを作ってみました。
CRUD操作したかったので、kubectl調のサブコマンド構成にしてみました。

man

demo.jpg

このツールでできること

コマンドラインから以下操作が可能です。
* ブック作成、削除
* シート作成、削除、リネーム、ダンプ(全値出力)
* セル値出力、更新

バイナリ

以下においています。
https://github.com/kuritayu/gotools/releases

impl

cobra

コマンドライン部分は、
* cobra init --pkg-name パッケージ名
* cobra add サブコマンド
でテンプレを作ります。

以下はgetの例です。Run:の箇所をいじっていきます。
```go

RunE: func(cmd *cobra.Command, args []string) error {
    if len(args) < 1 || len(args) > 3 {
        return errors.New("引数が不正です。")
    }
    f, err := goexcel.Load(args[0])
    if err != nil {
        return err
    }
    switch len(args) {
    case 1:
        if err := goexcel.PrintSheetName(f); err != nil {
            return err
        }
    case 2:
        if err := goexcel.Dump(f, args[1], ","); err != nil {
            return err
        }
    case 3:
        if err := goexcel.PrintValue(f, args[1], args[2]); err != nil {
            return err
        }
    }

    return nil
},

ポイント1

Run:RunEに変更し、errorを返却するように変えています。

ポイント2

今回のgetの場合、goexcel get ブック名 シート名 セル名みたいに使います。
get以降の文字列は、argsに格納されているので、argsから値を取り出して、各種関数を呼び出す仕組みです。

ポイント3

引数の数に応じて呼ぶ関数を変えるので、switch使って分岐しています。

excelize

すごくシンプルなライブラリでした。以下を愚直に呼び出す感じですね。
https://github.com/360EntSecGroup-Skylar/excelize

ただ、cobraで常にerrorを返却する必要があったので、excelizeラッパーも常にerrorを返すようにしています。

0
0
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
0
0