I'm using the RubyXL gem to read background colours of cells of an xlsx spreadsheet generated in Excel. This works fine if the file is opened or saved in LibreOffice. The fill colours are all detected as white ('ffffff'
) on the first read if this is not done.
I have tried to use File.Open
as an attempt to replicate the saving of the file before hand, but this was unsuccessful.
I access the background fill colour using cell && cell.fill_color
within a loop of each cell in each row.
Currently I have tried to use RubyXL's workbook save to replicate the saving, as below.
book = RubyXL::Parser.parse(path)
book.save
book = RubyXL::Parser.parse(path)
sheet = book.worksheets[0]
sd = sheet.sheet_data
i = 0 ; j = 0;
sheet.each { |row|
row && row.cells.each { |cell|
val = cell && cell.value
j +=1
bg = cell && cell.fill_color
puts val.to_s + "|---|" + bg.to_s
}
j = 0
i+=1
}
Is there a way to re-saved the file silently (no GUI, no dialog boxes) programmatically?