LoginSignup
0
2

More than 5 years have passed since last update.

go-ole で Excel を操作した場合と "tealeg/xlsx" で直接 xlsx ファイルを作った場合の違い

Last updated at Posted at 2018-08-21

以前、

という記事にある pipe2excel.exe というCSVのExcel 変換プログラムを作ったわけだが…

これ、巨大な CSV の時にあまりに遅いので、"github.com/tealeg/xlsx" というライブラリで直接 xlsx を出力できるようにしてみた(-oオプションを使う)

> はやい <

とっても速い。一瞬だ。考えてみたら go-ole だとセル1マス書くだけでも Excel と COM 通信をするわけだから、そりゃそうだ。ただ、セルのデフォルト状態がいろいろ違った。

  • フォントが MS-Pゴシック でなかった
  • 改行を含む場合に自動で折り返し状態にならなかった
  • 縦方向がセンタリングされなかった。

これらはプログラム的に go-ole 版と互換動作するよう修正した。これだけ書くと、"github.com/tealeg/xlsx"には非のうちどころがないように思えるが、一応注意事項を記しておこう。

  • "github.com/tealeg/xlsx" は「既存の xlsx を読む」「新規の xlsx を作成する」場合はよいが、「既存の xlsx に追記・更新する」場合、画像とか諸々消えてしまう(らしい)

この場合は go-ole を使うか、あるいは "github.com/loadoff/excl" を使う方がよさそうだ。"github.com/loadoff/excl" は検証していないが、作者の人自ら紹介記事(Go言語でExcel操作ライブラリを書いてみた - Qiita)を書いているので、そちらを参照いただきたい。

  • xls(Excel 2007 より過去の Excel で読み書きできるフォーマット)を作成できない

まぁ、ええやろ、xls は。Excel の方に xlsx を読み書きするアドオンを入れてもらった方がよろしい

  • go-ole だと、腐っても Excel 本体を動かしているので、おかしなデータを作成してしまう可能性が小さい

以上

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