Class: RubyReport::Generator::Xlsx
- Defined in:
- lib/ruby_report/generator/xlsx.rb
Defined Under Namespace
Classes: Worksheet
Constant Summary collapse
- WORKSHEET_LETTERS_COUNT =
25- ESCAPE_REGEXP =
/["~#%&:;<>!=',@{|}\/?*()+\[\]$]/- XLSX_XSS_SYMBOLS =
%w[+ - = @ {=].freeze
Instance Method Summary collapse
- #add_report(report, worksheet_name:) ⇒ Object
- #generate ⇒ Object
-
#initialize ⇒ Xlsx
constructor
A new instance of Xlsx.
Constructor Details
#initialize ⇒ Xlsx
Returns a new instance of Xlsx.
47 48 49 50 51 |
# File 'lib/ruby_report/generator/xlsx.rb', line 47 def initialize @package = ::Axlsx::Package.new.tap { |package| package.use_shared_strings = true } @workbook = package.workbook @reports = [] end |
Instance Method Details
#add_report(report, worksheet_name:) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/ruby_report/generator/xlsx.rb', line 53 def add_report(report, worksheet_name:) reports << { report: report, worksheet: Worksheet.new(workbook, sanitize_worksheet_name(worksheet_name)), } end |
#generate ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/ruby_report/generator/xlsx.rb', line 60 def generate reports.each do |report| worksheet = report[:worksheet] report = report[:report] worksheet.add_header(report.header) report.each_row do |row| next if row.empty? worksheet.add_row(sanitize_row(row)) end end package.to_stream end |