4

Rubyを使用してExcel xlsからxlsxに変換する宝石/プラグイン/コードスニペットはありますか?

4

3 に答える 3

1

Excel がインストールされていると仮定すると、win32ole (http://ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html) を使用して Excel のスクリプトを作成できるはずです。最も簡単な方法は、ファイルの名前を .xlsx ファイルに変更し、Excel で開いて保存することです。おそらく、「名前を付けて保存」操作でスクリプトを作成するよりも簡単です。

これは Ruby ソリューションではありませんが、AutoIt を使用して Excel インターフェイスのスクリプトも作成しました。

于 2011-01-11T13:31:36.050 に答える
0

頭に浮かぶ唯一のオプションはrooです

編集

このリンクはxlsxファイルの書き込みを示していますが

于 2011-01-11T12:35:52.943 に答える
0

Excel がインストールされている場合は、次の方法を使用して xls ファイルを xlsx ファイルに変換できます。

require 'win32ole'

def xls2xlsx(path, target = nil)
  raise ArgumentError unless path =~ /.xls\Z/
  raise ArgumentError unless File.exist?(path)

  target = path + 'x' unless target # Save the workbook. / must be \  
  puts "convert %s to %s" % [path, target]

  # Create an instance of the Excel application object
  xl = WIN32OLE.new('Excel.Application')
  # Make Excel visible  1=visible 0=not visible
  xl.Visible = 1
  #~ xl.Interactive = false  #visible, but no input allowed
  #~ xl.ScreenUpdating = false  #make it faster
  xl.DisplayAlerts = false  #No alerts like "don't overwrite
  # Add a new Workbook object      
  wb = xl.Workbooks.Open(File.expand_path(path))

  wb.SaveAs(File.expand_path(target).gsub!(/\//, '\\'), 51 ) #excel 2007
  # Close the workbook
  wb.Close
  # Quit Excel
  xl.Quit
end

他の方法 (xlsx から xls) が必要な場合は、次を使用できます。

def xlsx2xls(path, target = nil)
  raise ArgumentError unless path =~ /.xlsx\Z/
  raise ArgumentError unless File.exist?(path)

  target = path.chop unless target # Save the workbook. / must be \  
  puts "convert %s to %s" % [path, target]

  # Create an instance of the Excel application object
  xl = WIN32OLE.new('Excel.Application')
  # Make Excel visible  1=visible 0=not visible
  xl.Visible = 1
  #~ xl.Interactive = false  #visible, but no input allowed
  #~ xl.ScreenUpdating = false  #make it faster
  xl.DisplayAlerts = false  #No alerts like "don't overwrite
  # Add a new Workbook object      
  wb = xl.Workbooks.Open(File.expand_path(path))

  wb.SaveAs(File.expand_path(target).gsub!(/\//, '\\'), -4143 ) #excel97_2003_format 
  # Close the workbook
  wb.Close
  # Quit Excel
  xl.Quit
end  

axlsxと組み合わせて 2 番目の方法を使用して、xls ファイルを取得します。最初に axslx で xlsx を作成し、それを winole 経由で xls に変換します。

于 2016-03-21T11:06:16.700 に答える