質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1647閲覧

RubyからのExcel書き出しについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/06/12 09:29

###【プログラム概要】
画像のピクセルごとの色を取り出してExcelのセルに塗りつぶします。
こちらのサイトのRuby版を作っています
Excelで佐々木希を描く with python

###【プログラム】

rb:ruby.rb

1require 'writeexcel' 2require 'chunky_png' 3 4image = ChunkyPNG::Image.from_file('sample.png') 5 6width = image.width 7height = image.height 8 9# エクセル作成 10wb = WriteExcel.new("colors.xls") 11ws = wb.add_worksheet('sample sheet') 12 13pul_wh = 0 14row = 0 15col = 0 16 17for w in 1..width do 18 for h in 1..height do 19 # 16進数の色を取り出す 20 hex_color = ChunkyPNG::Color.to_hex(image.pixels[pul_wh])[0,7] 21 # カラーセット 22 color = wb.set_custom_color(40, hex_color) 23 format = wb.add_format( 24 :bg_color => color, 25 :pattern => 1, 26 :border => 0 27 ) 28 29 # セルの塗りつぶし 30 ws.write(row, col, " ", format) 31 pul_wh += 1 32 row += 1 33 end 34 row = 0 35 col += 1 36end 37 38wb.close 39

###【問題点】
プログラムを実行しても43個のセルしか塗りつぶすことができません・・・
全てのセルを塗りつぶしたいのですが、どうすればいいでしょうか?
他のライブラリを使用してもかまいません(>_<)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

元ネタのPython版はxlsxでやってますよね。
WriteExcelは(というかxlsフォーマットだからだと思いますが)だと
任意の色設定をカスタムカラーでしか設定できないので、色数に上限があります。

なのでどうしてもWriteExcelでするなら、
カスタムカラーのカラーインデックス8~63を上手く使いまわして、
やりくりするしかないでしょうね。

あとは、xlsx対応版のExcelライブラリーを使う、ですかね。
そうすれば、もしかしたらPython版みたいにcell.fill
任意の色を塗ることができるかもしれません。

投稿2016/06/14 00:00

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/14 10:22

xlsxとxlsで違いがあるんですね。 知らなかったです。 ご回答ありがとうございました。xlsx対応のライブラリを見つけようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問