除非在LibreOffice中打开+保存文件,否则电子表格阅读器无法检测填充颜色

时间:2017-11-24 13:32:42

标签: ruby excel libreoffice rubyxl

我正在使用RubyXL gem来读取在Excel中生成的xlsx电子表格的单元格的背景颜色。如果在LibreOffice中打开或保存文件,这可以正常工作。如果没有这样做,填充颜色在第一次读取时都被检测为白色('ffffff')。

我曾尝试使用File.Open作为尝试预先复制文件的保存,但这不成功。

我在每行每个单元格的循环中使用cell && cell.fill_color访问背景填充颜色。

目前我已尝试使用RubyXL的工作簿保存来复制保存,如下所示。

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
            }

有没有办法以编程方式静默地重新保存文件(没有GUI,没有对话框)?

1 个答案:

答案 0 :(得分:0)

通过更强烈的google-fu以及来自另一个论坛的一些指示,我能够找到允许通过libreoffice进行文件转换的soffice功能组。

我运行了以下终端命令

soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" file_path

成功地解决了这个问题。