mirror of
https://github.com/docusealco/docuseal
synced 2026-11-04 14:42:32 -05:00
optimize xlsx export
This commit is contained in:
1 parent
4b00c896e4
commit
b8c1691bd7
4 files changed
+16
-17
No files matched your search
@@ -36,7 +36,7 @@ gem 'rotp'
|
|||||||
gem 'rouge', require: false
|
gem 'rouge', require: false
|
||||||
gem 'rqrcode', require: false
|
gem 'rqrcode', require: false
|
||||||
gem 'ruby-vips'
|
gem 'ruby-vips'
|
||||||
gem 'rubyXL', require: false
|
gem 'rubyzip', require: false
|
||||||
gem 'shakapacker'
|
gem 'shakapacker'
|
||||||
gem 'sidekiq'
|
gem 'sidekiq'
|
||||||
gem 'sqlite3', require: false
|
gem 'sqlite3', require: false
|
||||||
@@ -45,6 +45,7 @@ gem 'trilogy', require: false
|
|||||||
gem 'turbo-rails'
|
gem 'turbo-rails'
|
||||||
gem 'twitter_cldr', require: false
|
gem 'twitter_cldr', require: false
|
||||||
gem 'tzinfo-data'
|
gem 'tzinfo-data'
|
||||||
|
gem 'xlsxtream', require: false
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem 'better_html'
|
gem 'better_html'
|
||||||
|
|||||||
+5
-4
@@ -497,9 +497,6 @@ GEM
|
|||||||
ruby-vips (2.3.0)
|
ruby-vips (2.3.0)
|
||||||
ffi (~> 1.12)
|
ffi (~> 1.12)
|
||||||
logger
|
logger
|
||||||
rubyXL (3.4.35)
|
|
||||||
nokogiri (>= 1.10.8)
|
|
||||||
rubyzip (>= 3.2.2)
|
|
||||||
rubyzip (3.2.2)
|
rubyzip (3.2.2)
|
||||||
securerandom (0.4.1)
|
securerandom (0.4.1)
|
||||||
semantic_range (3.1.1)
|
semantic_range (3.1.1)
|
||||||
@@ -575,10 +572,13 @@ GEM
|
|||||||
base64
|
base64
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.5)
|
websocket-extensions (0.1.5)
|
||||||
|
xlsxtream (3.1.0)
|
||||||
|
zip_kit (>= 6.2, < 7)
|
||||||
xpath (3.2.0)
|
xpath (3.2.0)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.8)
|
||||||
yaml (0.4.0)
|
yaml (0.4.0)
|
||||||
zeitwerk (2.8.2)
|
zeitwerk (2.8.2)
|
||||||
|
zip_kit (6.3.4)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
aarch64-linux
|
aarch64-linux
|
||||||
@@ -638,7 +638,7 @@ DEPENDENCIES
|
|||||||
rubocop-rails
|
rubocop-rails
|
||||||
rubocop-rspec
|
rubocop-rspec
|
||||||
ruby-vips
|
ruby-vips
|
||||||
rubyXL
|
rubyzip
|
||||||
shakapacker
|
shakapacker
|
||||||
sidekiq
|
sidekiq
|
||||||
simplecov
|
simplecov
|
||||||
@@ -650,6 +650,7 @@ DEPENDENCIES
|
|||||||
tzinfo-data
|
tzinfo-data
|
||||||
web-console
|
web-console
|
||||||
webmock
|
webmock
|
||||||
|
xlsxtream
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 4.0.5
|
ruby 4.0.5
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
autoload :CSV, 'csv'
|
autoload :CSV, 'csv'
|
||||||
autoload :CSVSafe, 'csv-safe'
|
autoload :CSVSafe, 'csv-safe'
|
||||||
autoload :RubyXL, 'rubyXL'
|
autoload :Xlsxtream, 'xlsxtream'
|
||||||
autoload :Zip, 'zip'
|
autoload :Zip, 'zip'
|
||||||
autoload :Numo, 'numo/narray'
|
autoload :Numo, 'numo/narray'
|
||||||
autoload :OnnxRuntime, 'onnxruntime'
|
autoload :OnnxRuntime, 'onnxruntime'
|
||||||
|
|||||||
@@ -19,22 +19,19 @@ module Submissions
|
|||||||
end
|
end
|
||||||
|
|
||||||
def rows_to_xlsx(rows)
|
def rows_to_xlsx(rows)
|
||||||
workbook = RubyXL::Workbook.new
|
|
||||||
worksheet = workbook[0]
|
|
||||||
worksheet.sheet_name = Time.current.to_date.to_s
|
|
||||||
|
|
||||||
headers = build_headers(rows)
|
headers = build_headers(rows)
|
||||||
headers.each_with_index do |column_name, column_index|
|
|
||||||
worksheet.add_cell(0, column_index, column_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
rows.each.with_index(1) do |row, row_index|
|
io = StringIO.new
|
||||||
extract_columns(row, headers).each_with_index do |value, column_index|
|
|
||||||
worksheet.add_cell(row_index, column_index, value)
|
Xlsxtream::Workbook.open(io) do |workbook|
|
||||||
|
workbook.write_worksheet(Time.current.to_date.to_s) do |sheet|
|
||||||
|
sheet << headers.to_a
|
||||||
|
|
||||||
|
rows.each { |row| sheet << extract_columns(row, headers) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
workbook.stream.string
|
io.string
|
||||||
end
|
end
|
||||||
|
|
||||||
def rows_to_csv(rows)
|
def rows_to_csv(rows)
|
||||||
|
|||||||
Reference in new issue
Block a user