una - leer tabla de excel en matlab
Cómo escribir una matriz en Excel con diferentes estilos por columna usando Axlsx (1)
Así es como lo hago.
Primero, genero mis estilos de esta manera:
p = Axlsx::Package.new
wb = p.workbook
# styles
style_1 = wb.styles.add_style bg_color: ''3492ff'', font_name: ''Calibri''
style_2 = wb.styles.add_style bg_color: ''ff8800'', font_name: ''Arial''
Después de leer mis estilos, creo una hoja de trabajo:
wb.add_worksheet(name: ''Example'') do |sheet|
Después de que se haya creado la hoja de trabajo, puedo agregar datos llamando a add_row
. Y como último argumento, paso una variedad de estilos. Ejemplo:
sheet.add_row [''Column 1'', ''Column2''], style: [style_1, style_2]
De esta manera, puedo estilizar la celda de cada columna. En caso de que no desee aplicar style_2, simplemente escriba [style_1, nil]
.
Aquí está el código concatenado
p = Axlsx::Package.new
wb = p.workbook
# styles
style_1 = wb.styles.add_style bg_color: ''3492ff'', font_name: ''Calibri''
style_2 = wb.styles.add_style bg_color: ''ff8800'', font_name: ''Arial''
# worksheet
wb.add_worksheet(name: ''Example'') do |sheet|
sheet.add_row [''Column 1'', ''Column2''], style: [style_1, style_2]
end
end
Me gustaría poder utilizar la gema Axlsx para escribir una hoja de cálculo de Excel con diferentes estilos aplicados a diferentes columnas.
Estoy escribiendo un Array of Hashes en una fila completa a la vez y, como resultado, parece que no puedo formatear las columnas de manera diferente según sea necesario.
No sé cómo decir: "para las columnas AD, use el estilo predeterminado, sin embargo, para las columnas E y F, use la alineación central horizontal".
require ''axlsx''
p = Axlsx::Package.new
wb = p.workbook
# Default Style for all cells
standard_text = wb.styles.add_style( :alignment => {:vertical=>:center, :wrap_text=>true} )
# Custom styling to be applied to cells in rows E and F only
custom_text = wb.styles.add_style( :alignment => {:horizontal=>:center} )
assessment_technology_hashes.each do |rows|
sheet.add_row(rows.values, :height => 35, :style => standard_text)
end
Aquí está la estructura de la matriz de hash para las rows
que se está escribiendo con add_row
:
{:vendor_name=>"vendor", :link=>"Link/n", :importance=>"Low Priority", :score=>"5", :overall_score=>"4.5", :match=>"Yes", :access=>"Anywhere", :title=>"Full Title"}
{:vendor_name=>"vendor2", :link=>"Link2/n", :importance=>"Medium Priority", :score=>"7", :overall_score=>"8.5", :match=>"Yes", :access=>"Typical", :title=>"Full Title"}
...
...
En este escenario, ¿es el enfoque correcto para escribir todos los datos con el formato primario texto_estimado que se desea y luego aplicar el formato personalizado DESPUÉS de que se hayan escrito todos los datos?
Pensé que esto podría funcionar en el ciclo solo para escribir filas cuando la condición es verdadera, pero siempre devuelve falso:
sheet.add_row(rows.values, :height => 35, :style => custom_text) if rows.key?(:overall_score) || rows.key?(:match)
¿Puede alguien señalarme en la dirección correcta para hacer esto?