/ / Konwersja z Excel xls do xlsx w ruby ​​- ruby-on-rails, ruby, excel, xls, xlsx

Konwersja z Excel xls do xlsx w ruby ​​- ruby-on-rails, ruby, excel, xls, xlsx

Czy istnieje jakiś fragment gem / plugin / code, który konwertuje z Excel xls do xlsx używając ruby

Odpowiedzi:

1 dla odpowiedzi № 1

Zakładając, że masz zainstalowany program Excel, powinieneśmoże używać Win32ole (http://ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html) do skryptowania Excela. Najprostszą techniką będzie prawdopodobnie zmiana nazwy pliku na plik .xlsx, a następnie otwarcie go w programie Excel i zapisanie. Prawdopodobnie jest to łatwiejsze niż próba napisania skryptu przez operację "zapisz jako".

To nie jest rozwiązanie typu Ruby, ale także skryptowałem interfejs programu Excel za pomocą AutoIt.


0 dla odpowiedzi nr 2

roo to jedyna opcja, która przychodzi na myśl

EDYTOWAĆ

Mimo że ten link demonstruje pisanie plików xlsx


0 dla odpowiedzi № 3

Jeśli masz zainstalowany program Excel, możesz użyć poniższej metody do przekonwertowania pliku Xls do pliku Xlsx:

require "win32ole"

def xls2xlsx(path, target = nil)
raise ArgumentError unless path =~ /.xlsZ/
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

Jeśli potrzebujesz w inny sposób (xlsx do xls), możesz użyć:

def xlsx2xls(path, target = nil)
raise ArgumentError unless path =~ /.xlsxZ/
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

Używam drugiej metody w połączeniu z axlsx aby uzyskać plik xls. Najpierw tworzę xlsx za pomocą axslx, a następnie przekształcam go przez winole w xls.