sheet_converter 0.1.0 → 0.2.1
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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +33 -1
- data/README.md +1 -0
- data/lib/sheet_converter/cli.rb +36 -12
- data/lib/sheet_converter/version.rb +1 -1
- data/lib/sheet_converter.rb +1 -0
- data/sheet_converter.gemspec +2 -0
- metadata +29 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae8bebb6799355388e5c7c84e91a867d0c800f16f4a6ef9f8e720c5b2c3475fb
|
4
|
+
data.tar.gz: d318ee7ae48c00606f7ee44013c9e44771184662b51598c42ea0660d0297493a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9e834ecc66375854d66ccaafe6ffa559d5bf650c85e69ab5f5808eea3bd3ac0ea0d977f11e4dad54edcb8d7167f88a1184424f435a4024d35fb6a48a0ba7529
|
7
|
+
data.tar.gz: 43153ffd1e66ebb292cb7ea2c23868e35fddfb0eca1bf4e646cd1f8141e82c80f91bc7f1d0ee96c36ff7a1a42335cc2036f6af2ea51a6b124737b865a7c8f72b
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,24 +1,56 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sheet_converter (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
data/lib/sheet_converter/cli.rb
CHANGED
@@ -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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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(
|
17
|
-
|
18
|
-
|
19
|
-
|
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.
|
47
|
+
File.join(dir, [basename, output_ext].join)
|
24
48
|
end
|
25
49
|
end
|
data/lib/sheet_converter.rb
CHANGED
data/sheet_converter.gemspec
CHANGED
@@ -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
|
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
|