spreadsheet_exporter 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d2eb209eee9ba1278a80d18bb76de88f1bc8853b
4
- data.tar.gz: d28c4620775a149d83e52d8aaf34c93dd94f51f8
2
+ SHA256:
3
+ metadata.gz: 0ad6f031d8c92cafd4d6d396774185e1d61f6227a26cd00bdd371cf4c156443a
4
+ data.tar.gz: f4774c1c0f0b2b04da33a43c8de2695f34ee0bd013221ce6df0edee6cf01c23c
5
5
  SHA512:
6
- metadata.gz: fb4ee13c8e3863d01000b93881710f3937bd91a0fc05886b1bcfe740891ecf11bf4bf334c207e914db9d1d00c38173d0dbfda4917c877535689c9fa1f9d84dbf
7
- data.tar.gz: 77527fc2c06fc51e539ca1238cbed3263acc9c95077de58dd04fd84b4e51dbb9080bc8e6c626fdbc706aee0666fda96ea5b8784f8937eb619b9d0f534f0bf635
6
+ metadata.gz: dbc1633480acfdaf27f6de5e7114ca186219eb52d84f87c7fde7ccb2ed72ad2fbafa0f037d22d59dcda38e4bd5e21a88a8551273929eab9666cbd073e65dfa2a
7
+ data.tar.gz: a19bb127086162121c8cb9b027e013a0e00f32c9d6a8b1d89b14c5d782350ef3f9580e48ad030d0368b0476ace4213522bf4a0aa14fda8092ad33bb7032aa59e
data/README.md CHANGED
@@ -10,27 +10,21 @@ gem 'spreadsheet_exporter'
10
10
  Objects that are exported must respond to ```as_csv``` or ```as_json``` and return a hash
11
11
  representing column names and values.
12
12
 
13
+ ### CSV or XLSX
14
+ Output can be .csv or .xlsx. Choose by using SpreadsheetExporter::CSV or SpreadsheetExporter::XLSX modules.
15
+ Note that .csv output is actually tab delimited by default so that Excel can
16
+ open files properly without needing to use its import function. If you need to output
17
+ that is actually comma-delimited, pass ```:col_sep => ','``` as an option when exporting
18
+
19
+ ### Array of ActiveRecord Objects
13
20
  ```ruby
14
- SpreadsheetExporter::Spreadsheet.from_objects(array_of_objects) do |row|
15
- # Do some work on the row
16
- end
21
+ SpreadsheetExporter::CSV.from_objects(array_of_objects, options)
17
22
 
18
- # Starting at a custom offset
19
- SpreadsheetImporter::Import.from_spreadsheet(spreadsheet, :start_row => 5) do |row|
23
+ # Humanize header names using klass.human_attribute_name
24
+ SpreadsheetExporter::CSV.from_objects(array_of_objects, :humanize_headers_class => User)
20
25
  ```
21
26
 
22
27
  ### 2D Array
23
28
  ```ruby
24
- SpreadsheetImporter::Import.from_spreadsheet([["Bob", "Hoskins"], ["Roger", "Rabbit"]])
25
- ```
26
-
27
- ### CSV
28
- ```ruby
29
- SpreadsheetImporter::Import.from_csv("users.csv")
30
- ```
31
-
32
- ### .xlsx
33
- ```
34
- SpreadsheetImporter::Import.from_xlsx("users.xlsx")
35
- SpreadsheetImporter::Import.from_xlsx("users.xlsx", :sheet_name => '2015') # Processing a single sheet
29
+ SpreadsheetExporter::CSV.from_spreadsheet([["First Name", "Last Name"], ["Bob", "Hoskins"], ["Roger", "Rabbit"]])
36
30
  ```
@@ -6,12 +6,12 @@ module SpreadsheetExporter
6
6
  BOM = "\377\376".force_encoding("utf-16le") # Byte Order Mark so Excel displays characters correctly
7
7
 
8
8
  def self.from_objects(objects, options = {})
9
- spreadsheet = Spreadsheet.from_objects(objects, options)
9
+ spreadsheet = Spreadsheet.from_objects(objects, options).compact
10
10
  from_spreadsheet(spreadsheet)
11
11
  end
12
12
 
13
- def self.from_spreadsheet(spreadsheet, temp_file_path = 'tmp/items.xlsx')
14
- output = ::CSV.generate(:encoding => 'UTF-8', :col_sep => "\t") do |csv|
13
+ def self.from_spreadsheet(spreadsheet, options = {})
14
+ output = ::CSV.generate(**options.reverse_merge(:encoding => 'UTF-8', :col_sep => "\t")) do |csv|
15
15
  spreadsheet.each do |row|
16
16
  csv << row
17
17
  end
@@ -1,3 +1,3 @@
1
1
  module SpreadsheetExporter
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -4,7 +4,7 @@ require_relative 'spreadsheet'
4
4
  module SpreadsheetExporter
5
5
  module XLSX
6
6
  def self.from_objects(objects, options = {})
7
- spreadsheet = Spreadsheet.from_objects(objects, options)
7
+ spreadsheet = Spreadsheet.from_objects(objects, options).compact
8
8
  from_spreadsheet(spreadsheet)
9
9
  end
10
10
 
@@ -20,12 +20,12 @@ module SpreadsheetExporter
20
20
  headerFormat.set_bold
21
21
 
22
22
  # Write header row
23
- spreadsheet.first.each_with_index do |column_name, col|
23
+ Array(spreadsheet.first).each_with_index do |column_name, col|
24
24
  worksheet.write(0, col, column_name, headerFormat)
25
25
  end
26
26
 
27
- spreadsheet[1..-1].each_with_index do |values, row|
28
- values.each_with_index do |value, col|
27
+ Array(spreadsheet[1..-1]).each_with_index do |values, row|
28
+ Array(values).each_with_index do |value, col|
29
29
  worksheet.write(row + 1, col, value)
30
30
  end
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Jakobsen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-26 00:00:00.000000000 Z
11
+ date: 2026-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: write_xlsx
@@ -45,7 +45,7 @@ homepage: https://github.com/culturecode/spreadsheet_exporter
45
45
  licenses:
46
46
  - MIT
47
47
  metadata: {}
48
- post_install_message:
48
+ post_install_message:
49
49
  rdoc_options: []
50
50
  require_paths:
51
51
  - lib
@@ -60,9 +60,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  requirements: []
63
- rubyforge_project:
64
- rubygems_version: 2.4.7
65
- signing_key:
63
+ rubygems_version: 3.4.1
64
+ signing_key:
66
65
  specification_version: 4
67
66
  summary: Export your data as various types of spreadsheets
68
67
  test_files: []