画像付きのシートをコピーする
画像付きのシートをコピーする
リンク先ほどオブジェクトを扱えてないが一応成功した
オートシェイプの場合、画像本体のファイルがない
重要なオブジェクトは
code:ruby
sheet.drawing
sheet.generic_storage0 drawing.xml本体の情報 sheet.generic_storage0.xlsx_path sheet.relationship_container.relationships0.target シートと画像ファイルの関連 code:ruby
# coding: utf-8
require 'rubyXL'
# ワークブックの読込
template = RubyXL::Parser.parse('excels/hand_copy2.xlsx')
workbook = RubyXL::Parser.parse('excels/hand_copy2.xlsx')
# コピー元シート
add_sheet = template'その2' add_sheet.sheet_name = 'その2_Copy'
add_sheet.workbook = workbook
# worksheetの番号を取得する
add_sheet.sheet_id = workbook.worksheets.map(&:sheet_id).max + 1
add_sheet.generic_storage0.xlsx_path = ::Pathname.new("/xl/drawings/drawing#{add_sheet.sheet_id}.xml") add_sheet.relationship_container.relationships0.target = "../drawings/drawing#{add_sheet.sheet_id}.xml" # テストシートをコピーしてブックに追加
workbook.worksheets << add_sheet
workbook.relationship_container.relationships << RubyXL::Relationship.new(
:id => "rId#{workbook.relationship_container.relationships.size + 1}",
:type => add_sheet.class::REL_TYPE,
:target => "worksheets/sheet#{add_sheet.sheet_id}.xml")
# ブックの内容を列挙する
workbook.worksheets.each do |worksheet|
p "シートのクラス名:#{worksheet.class.name}"
p "シート名:#{worksheet.sheet_name}"
end
# outputsディレクトリに保存する
file_name = "プレーンExcelサンプル_画像_#{Time.now.strftime('%Y%m%d%H%M%s')}.xlsx"
workbook.write("/Users/kkanazaw/Dropbox/member_share/ssr/reports/#{file_name}")
困ったこと
sheet_idがずれる
workbookを読み込んだ時点で、sheet_idが2から始まっていた
元ファイルがどういう条件でそうなるのか不明
sheet5に対し、drawing6.xmlと番号がずれてしまう