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 +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
|