From 75b3536b1ee2d36c96d049450fdc8868386d6fc2 Mon Sep 17 00:00:00 2001 From: chiu Date: Mon, 10 Nov 2025 05:11:12 +0000 Subject: [PATCH] Repairing export failure Added support for handling characters not allowed in MS Excel --- app/views/admin/seminars/export.xlsx.axlsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/views/admin/seminars/export.xlsx.axlsx b/app/views/admin/seminars/export.xlsx.axlsx index 9847043..43a9c4b 100644 --- a/app/views/admin/seminars/export.xlsx.axlsx +++ b/app/views/admin/seminars/export.xlsx.axlsx @@ -2,7 +2,12 @@ wb = xlsx_package.workbook -wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet| +illegal_chars = /[:\\\/\[\]\*\?]/ + +sanitized_title = @seminar.title.to_s.gsub(illegal_chars, ' ').strip +sheet_name = (sanitized_title[0..27] + '...').gsub(/\.{4,}/, '...') + +wb.add_worksheet(name: sheet_name) do |sheet| row = [t('seminar_signup.signup_time')] @@ -26,7 +31,7 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet| seminar_signup_fields = @seminar.seminar_signup_fields.where(:disabled=>false).asc(:sort_number, :_id).to_a - seminar_signup_fields.each do |rf| + seminar_signup_fields.each do |rf| if rf.can_muti_lang_input? @site_in_use_locales.each do |l| row << rf.title + " (#{t(l.to_s)})" @@ -35,9 +40,10 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet| row << rf.title end end + highlight_style = wb.styles.add_style( :bg_color => 'ffeb3b', - :b => true, + :b => true, :border => { :style => :thick, :color => "000000", :edges => [:top, :left, :bottom, :right] }, :alignment => {:horizontal => :center, :vertical => :center, :wrap_text => true} ) @@ -52,13 +58,13 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet| row2 << "#{signup.display_serial_number}" row2 << "#{signup[:name]} " row2 << "#{signup.unit} " - row2 << "#{signup[:tel]} " + row2 << "#{signup.tel} " row2 << "#{signup[:phone]} " row2 << "#{signup[:fax]} " row2 << "#{signup.address} " row2 << "#{signup[:email]} " row2 << "#{signup.note} " - seminar_signup_fields.each do |rf| + seminar_signup_fields.each do |rf| if rf.can_muti_lang_input? @site_in_use_locales.each do |l| row2 << (@seminar.get_attribute_value(rf,signup.id).get_value_by_locale(l) rescue '') @@ -76,5 +82,4 @@ wb.add_worksheet(name: (@seminar.title.to_s[0..27]+'...')) do |sheet| sheet.add_row row2 , :types => types, :style => styles end -end - +end \ No newline at end of file