Module: HasHelpers::XlsxExport
- Included in:
- Controller
- Defined in:
- app/controllers/has_helpers/xlsx_export.rb
Constant Summary collapse
- VALID_AXLSX_VALUES =
%i[string integer float date time boolean].freeze
- AXLSX_SHEET_NAME_BYTE_LIMIT =
31- AXLSX_SHEET_NAME_CHARMAP =
{ ?[ => ?(, ?] => ?), ?* => "", ?/ => ?-, ?\\ => ?-, ?? => "", ?: => "", }.freeze
Instance Method Summary collapse
-
#send_xlsx(sheets:, name: nil, filename: (name.present? || nil) && (/\.xlsx/.match?(name) ? name : "#{ name }.xlsx"), **options) ⇒ Object
Example send_xlsx( sheets: [ { name: "Sheet 1", data: [["Row1", 123], ["Row2", 456]], headers: ["Name","Number"], column_types: [:string,:number] },{ name: "Sheet 2", data: [["Row1", 123], ["Row2", 456]], headers: ["Name","Number"], column_types: [:string,:number] } ], # End :sheets name: "My Report", # Will result in the filename being "My Report.xlsx" (alternative to supplying the entire filename) filename: "my-report.xlsx" # :filename and :name should be used exclusively. ).
Instance Method Details
#send_xlsx(sheets:, name: nil, filename: (name.present? || nil) && (/\.xlsx/.match?(name) ? name : "#{ name }.xlsx"), **options) ⇒ Object
Example
send_xlsx( sheets: [ { name: "Sheet 1", data: [["Row1", 123], ["Row2", 456]], headers: ["Name","Number"], column_types: [:string,:number] },{ name: "Sheet 2", data: [["Row1", 123], ["Row2", 456]], headers: ["Name","Number"], column_types: [:string,:number] } ], # End :sheets name: "My Report", # Will result in the filename being "My Report.xlsx" (alternative to supplying the entire filename) filename: "my-report.xlsx" # :filename and :name should be used exclusively. )
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/controllers/has_helpers/xlsx_export.rb', line 38 def send_xlsx( sheets:, name: nil, filename: (name.present? || nil) && (/\.xlsx/.match?(name) ? name : "#{ name }.xlsx"), ** ) headers["Content-Disposition"] = %Q(attachment; filename="#{ filename }") send_data( axlsx_package_from_sheets(sheets: sheets, **).to_stream.read, filename: filename, type: ::Mime[:xlsx].to_s ) end |