spreadsheet_exporter 0.1.0 → 0.1.3

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0f35de8fa1c694230a24e6bcaeaae713e3b162d9c7109f07bef0fb886cb57aac
4
+ data.tar.gz: b926ade21fe17468043676d0795a6fc7eecf5ad3a2d9a507c4d709c0f37b7303
5
+ SHA512:
6
+ metadata.gz: 1dd829ce6816c2d40b82f3553595e3ee644b5c12eec914c6b4f44ed472dd56c4a7362d1c47e982a229daade09a02654b81abaf9f6b38c98114769435a05e0a3e
7
+ data.tar.gz: fde7aa07e6090e6e0fc2403da828112873a04cdcf87574dadaaf116d6596d0fec32ef6306accdabb90c06e408d3c62bbfbf8d6aefcb4cd244a27d5984152bc17
data/README.md CHANGED
@@ -1,2 +1,30 @@
1
- = SpreadsheetExporter
1
+ # SpreadsheetExporter
2
2
 
3
+ ```ruby
4
+ gem 'spreadsheet_exporter'
5
+ ```
6
+
7
+
8
+ ## Usage
9
+
10
+ Objects that are exported must respond to ```as_csv``` or ```as_json``` and return a hash
11
+ representing column names and values.
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
20
+ ```ruby
21
+ SpreadsheetExporter::CSV.from_objects(array_of_objects, options)
22
+
23
+ # Humanize header names using klass.human_attribute_name
24
+ SpreadsheetExporter::CSV.from_objects(array_of_objects, :humanize_headers_class => User)
25
+ ```
26
+
27
+ ### 2D Array
28
+ ```ruby
29
+ SpreadsheetExporter::CSV.from_spreadsheet([["First Name", "Last Name"], ["Bob", "Hoskins"], ["Roger", "Rabbit"]])
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
@@ -14,7 +14,7 @@ module SpreadsheetExporter
14
14
 
15
15
  # Create the csv, ensuring to place each row's attributes under the appropriate header (since rows may not have all the same attributes)
16
16
  [].tap do |spreadsheet|
17
- spreadsheet << headers
17
+ spreadsheet << (options[:humanize_headers_class] ? han(options[:humanize_headers_class], headers) : headers)
18
18
  rows.each do |row|
19
19
  sorted_row = []
20
20
  row.each do |header, value|
@@ -1,3 +1,3 @@
1
1
  module SpreadsheetExporter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.3"
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
@@ -1,5 +1,9 @@
1
1
  require 'spreadsheet_exporter/csv'
2
2
  require 'spreadsheet_exporter/xlsx'
3
-
4
3
  module SpreadsheetExporter
4
+ begin
5
+ Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
6
+ rescue NameError
7
+ # No Mime::Type
8
+ end
5
9
  end
metadata CHANGED
@@ -1,32 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nicholas Jakobsen
9
- autorequire:
10
8
  bindir: bin
11
9
  cert_chain: []
12
- date: 2015-05-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
13
11
  dependencies:
14
12
  - !ruby/object:Gem::Dependency
15
13
  name: write_xlsx
16
14
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
15
  requirements:
19
- - - ">="
16
+ - - '='
20
17
  - !ruby/object:Gem::Version
21
- version: '0'
18
+ version: 1.12.1
22
19
  type: :runtime
23
20
  prerelease: false
24
21
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
22
  requirements:
27
- - - ">="
23
+ - - '='
28
24
  - !ruby/object:Gem::Version
29
- version: '0'
25
+ version: 1.12.1
26
+ - !ruby/object:Gem::Dependency
27
+ name: rubyzip
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.4.1
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '='
38
+ - !ruby/object:Gem::Version
39
+ version: 2.4.1
30
40
  description: Export your data as various types of spreadsheets. Supports csv and xlsx
31
41
  output.
32
42
  email:
@@ -35,38 +45,34 @@ executables: []
35
45
  extensions: []
36
46
  extra_rdoc_files: []
37
47
  files:
48
+ - MIT-LICENSE
49
+ - README.md
50
+ - Rakefile
51
+ - lib/spreadsheet_exporter.rb
38
52
  - lib/spreadsheet_exporter/csv.rb
39
53
  - lib/spreadsheet_exporter/spreadsheet.rb
40
54
  - lib/spreadsheet_exporter/version.rb
41
55
  - lib/spreadsheet_exporter/xlsx.rb
42
- - lib/spreadsheet_exporter.rb
43
56
  - lib/tasks/exporter_tasks.rake
44
- - MIT-LICENSE
45
- - Rakefile
46
- - README.md
47
57
  homepage: https://github.com/culturecode/spreadsheet_exporter
48
58
  licenses:
49
59
  - MIT
50
- post_install_message:
60
+ metadata: {}
51
61
  rdoc_options: []
52
62
  require_paths:
53
63
  - lib
54
64
  required_ruby_version: !ruby/object:Gem::Requirement
55
- none: false
56
65
  requirements:
57
66
  - - ">="
58
67
  - !ruby/object:Gem::Version
59
68
  version: '0'
60
69
  required_rubygems_version: !ruby/object:Gem::Requirement
61
- none: false
62
70
  requirements:
63
71
  - - ">="
64
72
  - !ruby/object:Gem::Version
65
73
  version: '0'
66
74
  requirements: []
67
- rubyforge_project:
68
- rubygems_version: 1.8.25
69
- signing_key:
70
- specification_version: 3
75
+ rubygems_version: 3.6.9
76
+ specification_version: 4
71
77
  summary: Export your data as various types of spreadsheets
72
78
  test_files: []