是否有任何宝石/插件/代码片段将使用ruby从Excel xls转换为xlsx
答案 0 :(得分:1)
假设你安装了excel,你应该可以使用win32ole(http://ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html)来编写Excel脚本。最简单的技术可能是将文件重命名为.xlsx文件,然后让Excel打开并保存。这可能比通过“另存为”操作编写脚本更容易。
这不是Ruby解决方案,但我也使用AutoIt编写了Excel界面脚本。
答案 1 :(得分:0)
答案 2 :(得分: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结合使用来获取xls文件。首先,我使用axslx创建一个xlsx,然后通过winole将其转换为xls。