sheet_converter 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad0fc00ac15c2e5b817c3d910e1e802975e1e4a644f57ed93eaa1d9b6e818142
4
- data.tar.gz: 4085482696c97565ba8e401faeb68eefba6205331c4bb9a0194e279d09e03f99
3
+ metadata.gz: ae8bebb6799355388e5c7c84e91a867d0c800f16f4a6ef9f8e720c5b2c3475fb
4
+ data.tar.gz: d318ee7ae48c00606f7ee44013c9e44771184662b51598c42ea0660d0297493a
5
5
  SHA512:
6
- metadata.gz: 8ea122582fa764e309c776a64718f243d5aeddf4a84b7c58910f1efeff1bcd421e3757266689133bda48f6f9d1b0111177c02bc6aad2aa9532ed0099a717be94
7
- data.tar.gz: 9047d532f32c27e61a7108a051bcbf22131bea06a587a4b430c11d5e5d8b99e33874432bacb3617d67b1f98e7800a349f9e09de4797c65891e33eac1eb718370
6
+ metadata.gz: e9e834ecc66375854d66ccaafe6ffa559d5bf650c85e69ab5f5808eea3bd3ac0ea0d977f11e4dad54edcb8d7167f88a1184424f435a4024d35fb6a48a0ba7529
7
+ data.tar.gz: 43153ffd1e66ebb292cb7ea2c23868e35fddfb0eca1bf4e646cd1f8141e82c80f91bc7f1d0ee96c36ff7a1a42335cc2036f6af2ea51a6b124737b865a7c8f72b
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ .byebug_history
data/Gemfile.lock CHANGED
@@ -1,24 +1,56 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sheet_converter (0.1.0)
4
+ sheet_converter (0.2.0)
5
+ axlsx (>= 3.0.0.pre)
5
6
  roo (~> 2.7.0)
7
+ spreadsheet_architect
6
8
  thor (~> 0.20)
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
13
+ activesupport (5.2.1)
14
+ concurrent-ruby (~> 1.0, >= 1.0.2)
15
+ i18n (>= 0.7, < 2)
16
+ minitest (~> 5.1)
17
+ tzinfo (~> 1.1)
18
+ axlsx (3.0.0.pre)
19
+ htmlentities (~> 4.3, >= 4.3.4)
20
+ mimemagic (~> 0.3)
21
+ nokogiri (~> 1.8, >= 1.8.2)
22
+ rubyzip (~> 1.2, >= 1.2.1)
23
+ axlsx_styler (0.2.0)
24
+ activesupport (>= 3.1)
25
+ axlsx (>= 2.0, < 4)
26
+ builder (3.2.3)
11
27
  byebug (10.0.2)
28
+ concurrent-ruby (1.1.3)
29
+ htmlentities (4.3.4)
30
+ i18n (1.1.1)
31
+ concurrent-ruby (~> 1.0)
32
+ mimemagic (0.3.2)
12
33
  mini_portile2 (2.3.0)
13
34
  minitest (5.11.3)
14
35
  nokogiri (1.8.5)
15
36
  mini_portile2 (~> 2.3.0)
16
37
  rake (10.5.0)
38
+ rodf (1.0.0)
39
+ activesupport (>= 3.0)
40
+ builder (>= 3.0)
41
+ rubyzip (>= 1.0)
17
42
  roo (2.7.1)
18
43
  nokogiri (~> 1)
19
44
  rubyzip (~> 1.1, < 2.0.0)
20
45
  rubyzip (1.2.2)
46
+ spreadsheet_architect (3.2.0)
47
+ axlsx (>= 2, < 4)
48
+ axlsx_styler (>= 0.1.7, < 2)
49
+ rodf (>= 1.0.0, < 2)
21
50
  thor (0.20.3)
51
+ thread_safe (0.3.6)
52
+ tzinfo (1.2.5)
53
+ thread_safe (~> 0.1)
22
54
 
23
55
  PLATFORMS
24
56
  ruby
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # SheetConverter
2
+ [![Gem Version](https://badge.fury.io/rb/sheet_converter.svg)](https://badge.fury.io/rb/sheet_converter)
2
3
 
3
4
  Convert sheet files.
4
5
 
@@ -2,24 +2,48 @@ class SheetConverter::CLI < Thor
2
2
  desc "xlsx2csv INPUT_PATH", "convert XLSX files to CSV files at the same folder"
3
3
  option :output, aliases: [:o], desc: "specify the output directory"
4
4
  def xlsx2csv(input_path)
5
- if File.directory?(input_path)
6
- Dir.glob(File.join(input_path, "**", "*.xlsx")).each do |xlsx|
7
- file_xlsx_to_csv(xlsx, dir: options[:output])
8
- end
9
- else
10
- file_xlsx_to_csv(input_path, dir: options[:output])
5
+ nav_input_files(input_path, ".xlsx") do |file|
6
+ file_xlsx_to_csv(file, dir: options[:output])
7
+ end
8
+ end
9
+
10
+ desc "csv2xlsx INPUT_PATH", "convert CSV files to XLSX files at the same folder"
11
+ option :output, aliases: [:o], desc: "specify the output directory"
12
+ def csv2xlsx(input_path)
13
+ nav_input_files(input_path, ".csv") do |file|
14
+ file_csv_to_xlsx(file, dir: options[:output])
11
15
  end
12
16
  end
13
17
 
14
18
  private
15
19
 
16
- def file_xlsx_to_csv(xlsx, dir: nil)
17
- extname = File.extname(xlsx)
18
- basename = File.basename(xlsx, extname)
19
- dir = dir || File.dirname(xlsx)
20
+ def file_xlsx_to_csv(xlsx_path, dir: nil)
21
+ csv = Roo::Excelx.new(xlsx_path).to_csv
22
+ File.write(parse_file_output_path(xlsx_path, output_ext: '.csv', dir: dir), csv)
23
+ end
24
+
25
+ def file_csv_to_xlsx(csv_path, dir: nil)
26
+ csv = Roo::CSV.new(csv_path)
27
+ headers = csv.row(1)
28
+
29
+ xlsx = SpreadsheetArchitect.to_xlsx(headers: headers, data: csv.to_a[1..-1])
30
+ File.write(parse_file_output_path(csv_path, output_ext: '.xlsx', dir: dir), xlsx)
31
+ end
32
+
33
+ def nav_input_files(input_path, ext, &blk)
34
+ if File.directory?(input_path)
35
+ Dir.glob(File.join(input_path, "**", "*#{ext}")).each(&blk)
36
+ else
37
+ blk.call(input_path)
38
+ end
39
+ end
40
+
41
+ def parse_file_output_path(filepath, output_ext:, dir: nil)
42
+ extname = File.extname(filepath)
43
+ basename = File.basename(filepath, extname)
44
+ dir = dir || File.dirname(filepath)
20
45
  Dir.mkdir(dir) unless Dir.exist?(dir)
21
- csv = "#{basename}.csv"
22
46
 
23
- File.write(File.join(dir, csv), Roo::Excelx.new(xlsx).to_csv)
47
+ File.join(dir, [basename, output_ext].join)
24
48
  end
25
49
  end
@@ -1,3 +1,3 @@
1
1
  module SheetConverter
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "thor"
2
2
  require "roo"
3
+ require 'spreadsheet_architect'
3
4
  require "sheet_converter/version"
4
5
  require "sheet_converter/cli"
5
6
 
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency "thor", "~> 0.20"
23
23
  spec.add_dependency "roo", "~> 2.7.0"
24
+ spec.add_dependency 'axlsx', '3.0.0.pre'
25
+ spec.add_dependency "spreadsheet_architect"
24
26
 
25
27
  spec.add_development_dependency "bundler", "~> 1.16"
26
28
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sheet_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ug0
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.7.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: axlsx
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0.pre
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0.pre
55
+ - !ruby/object:Gem::Dependency
56
+ name: spreadsheet_architect
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement