用axlsx将多行文字插入电子表格
我试图用Ruby中的axlsx gem创build一些多行单元格。 我发现这个问题,build议使用to_xml_string
修复 – 但不pipe我尝试什么,我不能得到这些多行单元格!
这是我目前的代码:
def saveAsXlsx Axlsx::Package.new do |p| p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet| sheet.add_row @headers @headers.each_with_index do |line, i| @headerValues[i].unshift @noteValues[i] sheet.add_row @headerValues[i] sheet.to_xml_string end end p.serialize('simple.xlsx') end end
如果有人能帮助我,我会非常感激。
Facetoe –
我有一种感觉,如果你把代码从软件包中取出,保留xml_space的值在工作簿中正确初始化。
你已经在图书馆中突出了一个隐藏的假设,假设你永远不会直接从收集的软件包中build立。
显然我会努力支持这个用例。
与此同时,您将通过执行以下操作来节省处理器的大量工作:
p = Axlsx::package.new p.workbook.add_worksheet do |sheet| # - your code - styles is available via sheet # !! you do _not_ need to call to_xml_string end p.serialize('foo')
说实话,我从来没有想到,有人会用一种方法做所有的报告处理,所以这是最有启发性的!
最好,
randym
万一有其他人有这个问题,我在错误的地方使用to_xml_string
…
这里是更新的代码:
#Save to excel spreadsheet found at file def saveAsXlsx(file) Axlsx::Package.new do |p| p.workbook.styles do |s| #Column header format black_cell = s.add_style :bg_color => "00", :fg_color => "FF", :sz => 14, :alignment => { :horizontal=> :center } headerFormat = [] @headers.size.times {headerFormat << black_cell} p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet| sheet.add_row @headers, :style => headerFormat numEntries = @headerValues.size #Add the values to the spreadsheet 0.upto(numEntries-1) do |i| sheet.add_row @headerValues[i], :height => 60, :widths=>[50, :auto, :auto, :auto, :auto] end #This is necessary to preserve newlines sheet.to_xml_string end p.serialize(file) end end end