rubyXL 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README +2 -0
- data/README.rdoc +23 -1
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/lib/rubyXL.rb +1 -0
- data/lib/worksheet.rb +1 -1
- data/lib/writer/styles_writer.rb +4 -4
- data/lib/writer/theme_writer.rb +1 -4
- data/rubyXL.gemspec +5 -16
- metadata +21 -32
- data/lib/test.html +0 -1
- data/lib/tests/test.rb +0 -110
- data/lib/tests/test10.rb +0 -16
- data/lib/tests/test2.rb +0 -118
- data/lib/tests/test3.rb +0 -76
- data/lib/tests/test4.rb +0 -92
- data/lib/tests/test5.rb +0 -90
- data/lib/tests/test6.rb +0 -50
- data/lib/tests/test7.rb +0 -48
- data/lib/tests/test8.rb +0 -12
- data/lib/tests/test9.rb +0 -60
data/README
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,28 @@
|
|
1
1
|
= rubyXL
|
2
2
|
|
3
|
-
|
3
|
+
== To Install:
|
4
|
+
gem install rubyXL
|
5
|
+
|
6
|
+
== To Use:
|
7
|
+
require 'rubyXL' #assuming rubygems is already required
|
8
|
+
|
9
|
+
=== Parsing
|
10
|
+
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
|
11
|
+
|
12
|
+
=== Creating
|
13
|
+
workbook = RubyXL::Workbook.new
|
14
|
+
workbook.worksheets[0].add_cell(0,0,'A1') #sets A1 to string "A1"
|
15
|
+
workbook.worksheets[0].add_cell(0,1,'','A1') #sets A2 to value of A1
|
16
|
+
|
17
|
+
=== Modifying
|
18
|
+
workbook.worksheets[0].sheet_data[0][0].change_font_bold(true) #sets A1 to bold
|
19
|
+
workbook.worksheets[0].change_row_font_italics(0,true) #makes first row italicized
|
20
|
+
|
21
|
+
=== Writing
|
22
|
+
workbook.write("path/to/desired/Excel/file.xlsx")
|
23
|
+
|
24
|
+
== For more information
|
25
|
+
Take a look at the files in spec/lib/ for rspecs on most methods
|
4
26
|
|
5
27
|
== Contributing to rubyXL
|
6
28
|
|
data/Rakefile
CHANGED
@@ -15,10 +15,10 @@ require 'jeweler'
|
|
15
15
|
Jeweler::Tasks.new do |gem|
|
16
16
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
17
|
gem.name = "rubyXL"
|
18
|
-
gem.homepage = "http://github.com/
|
18
|
+
gem.homepage = "http://github.com/gilt/rubyXL"
|
19
19
|
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents}
|
21
|
-
gem.description = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents}
|
20
|
+
gem.summary = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
21
|
+
gem.description = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
22
22
|
gem.email = "bhagwat.vivek@gmail.com"
|
23
23
|
gem.authors = ["Vivek Bhagwat"]
|
24
24
|
# dependencies defined in Gemfile
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.7
|
data/lib/rubyXL.rb
CHANGED
@@ -4,6 +4,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'private_class'))
|
|
4
4
|
require File.expand_path(File.join(File.dirname(__FILE__),'worksheet'))
|
5
5
|
require File.expand_path(File.join(File.dirname(__FILE__),'cell'))
|
6
6
|
require File.expand_path(File.join(File.dirname(__FILE__),'parser'))
|
7
|
+
require File.expand_path(File.join(File.dirname(__FILE__),'color'))
|
7
8
|
|
8
9
|
module RubyXL
|
9
10
|
end
|
data/lib/worksheet.rb
CHANGED
@@ -977,7 +977,7 @@ class Worksheet < PrivateClass
|
|
977
977
|
end
|
978
978
|
|
979
979
|
@row_styles[(row+1).to_s][:style] =
|
980
|
-
modify_font(@workbook,
|
980
|
+
modify_font(@workbook,(@row_styles[(row+1).to_s][:style]).to_i)
|
981
981
|
|
982
982
|
if @sheet_data[row].nil?
|
983
983
|
@sheet_data[row] = []
|
data/lib/writer/styles_writer.rb
CHANGED
@@ -280,10 +280,10 @@ module Writer
|
|
280
280
|
'fillId'=>fill_id_corrector[xf[:fillId].to_s].to_s,
|
281
281
|
'borderId'=>border_id_corrector[xf[:borderId].to_s].to_s,
|
282
282
|
'xfId'=>xf[:xfId].to_s,
|
283
|
-
'applyFont'=>
|
284
|
-
'applyFill'=>
|
285
|
-
'applyAlignment'=>
|
286
|
-
'applyNumberFormat'=>
|
283
|
+
'applyFont'=>xf[:applyFont].to_i.to_s, #0 if nil
|
284
|
+
'applyFill'=>xf[:applyFill].to_i.to_s,
|
285
|
+
'applyAlignment'=>xf[:applyAlignment].to_i.to_s,
|
286
|
+
'applyNumberFormat'=>xf[:applyNumberFormat].to_i.to_s) {
|
287
287
|
unless xf_obj.is_a?Array
|
288
288
|
unless xf_obj[:alignment].nil?
|
289
289
|
xml.alignment('horizontal'=>xf_obj[:alignment][:attributes][:horizontal].to_s,
|
data/lib/writer/theme_writer.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
#
|
2
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'worksheet'))
|
3
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'cell'))
|
4
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'color'))
|
1
|
+
# coding: utf-8
|
5
2
|
require 'rubygems'
|
6
3
|
require 'nokogiri'
|
7
4
|
|
data/rubyXL.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rubyXL}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Vivek Bhagwat"]
|
12
|
-
s.date = %q{2011-08-
|
13
|
-
s.description = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents}
|
12
|
+
s.date = %q{2011-08-02}
|
13
|
+
s.description = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
14
14
|
s.email = %q{bhagwat.vivek@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
@@ -32,17 +32,6 @@ Gem::Specification.new do |s|
|
|
32
32
|
"lib/parser.rb",
|
33
33
|
"lib/private_class.rb",
|
34
34
|
"lib/rubyXL.rb",
|
35
|
-
"lib/test.html",
|
36
|
-
"lib/tests/test.rb",
|
37
|
-
"lib/tests/test10.rb",
|
38
|
-
"lib/tests/test2.rb",
|
39
|
-
"lib/tests/test3.rb",
|
40
|
-
"lib/tests/test4.rb",
|
41
|
-
"lib/tests/test5.rb",
|
42
|
-
"lib/tests/test6.rb",
|
43
|
-
"lib/tests/test7.rb",
|
44
|
-
"lib/tests/test8.rb",
|
45
|
-
"lib/tests/test9.rb",
|
46
35
|
"lib/workbook.rb",
|
47
36
|
"lib/worksheet.rb",
|
48
37
|
"lib/writer/app_writer.rb",
|
@@ -65,11 +54,11 @@ Gem::Specification.new do |s|
|
|
65
54
|
"spec/lib/workbook_spec.rb",
|
66
55
|
"spec/lib/worksheet_spec.rb"
|
67
56
|
]
|
68
|
-
s.homepage = %q{http://github.com/
|
57
|
+
s.homepage = %q{http://github.com/gilt/rubyXL}
|
69
58
|
s.licenses = ["MIT"]
|
70
59
|
s.require_paths = ["lib"]
|
71
60
|
s.rubygems_version = %q{1.3.7}
|
72
|
-
s.summary = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents}
|
61
|
+
s.summary = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
73
62
|
|
74
63
|
if s.respond_to? :specification_version then
|
75
64
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyXL
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 7
|
10
|
+
version: 1.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Vivek Bhagwat
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-02 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
22
|
+
type: :development
|
23
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
25
25
|
requirements:
|
@@ -29,11 +29,11 @@ dependencies:
|
|
29
29
|
segments:
|
30
30
|
- 0
|
31
31
|
version: "0"
|
32
|
+
prerelease: false
|
32
33
|
name: shoulda
|
33
34
|
requirement: *id001
|
34
|
-
type: :development
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
36
|
+
type: :development
|
37
37
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
38
|
none: false
|
39
39
|
requirements:
|
@@ -45,11 +45,11 @@ dependencies:
|
|
45
45
|
- 0
|
46
46
|
- 0
|
47
47
|
version: 1.0.0
|
48
|
+
prerelease: false
|
48
49
|
name: bundler
|
49
50
|
requirement: *id002
|
50
|
-
type: :development
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
52
|
+
type: :development
|
53
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
@@ -61,11 +61,11 @@ dependencies:
|
|
61
61
|
- 6
|
62
62
|
- 0
|
63
63
|
version: 1.6.0
|
64
|
+
prerelease: false
|
64
65
|
name: jeweler
|
65
66
|
requirement: *id003
|
66
|
-
type: :development
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
68
|
+
type: :development
|
69
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
71
71
|
requirements:
|
@@ -75,11 +75,11 @@ dependencies:
|
|
75
75
|
segments:
|
76
76
|
- 0
|
77
77
|
version: "0"
|
78
|
+
prerelease: false
|
78
79
|
name: rcov
|
79
80
|
requirement: *id004
|
80
|
-
type: :development
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
|
82
|
+
type: :development
|
83
83
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
@@ -91,11 +91,11 @@ dependencies:
|
|
91
91
|
- 4
|
92
92
|
- 4
|
93
93
|
version: 1.4.4
|
94
|
+
prerelease: false
|
94
95
|
name: nokogiri
|
95
96
|
requirement: *id005
|
96
|
-
type: :development
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
|
98
|
+
type: :development
|
99
99
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
100
100
|
none: false
|
101
101
|
requirements:
|
@@ -107,11 +107,11 @@ dependencies:
|
|
107
107
|
- 9
|
108
108
|
- 4
|
109
109
|
version: 0.9.4
|
110
|
+
prerelease: false
|
110
111
|
name: rubyzip
|
111
112
|
requirement: *id006
|
112
|
-
type: :development
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
-
|
114
|
+
type: :development
|
115
115
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
@@ -123,10 +123,10 @@ dependencies:
|
|
123
123
|
- 3
|
124
124
|
- 4
|
125
125
|
version: 1.3.4
|
126
|
+
prerelease: false
|
126
127
|
name: rspec
|
127
128
|
requirement: *id007
|
128
|
-
|
129
|
-
description: rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents
|
129
|
+
description: rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents
|
130
130
|
email: bhagwat.vivek@gmail.com
|
131
131
|
executables: []
|
132
132
|
|
@@ -151,17 +151,6 @@ files:
|
|
151
151
|
- lib/parser.rb
|
152
152
|
- lib/private_class.rb
|
153
153
|
- lib/rubyXL.rb
|
154
|
-
- lib/test.html
|
155
|
-
- lib/tests/test.rb
|
156
|
-
- lib/tests/test10.rb
|
157
|
-
- lib/tests/test2.rb
|
158
|
-
- lib/tests/test3.rb
|
159
|
-
- lib/tests/test4.rb
|
160
|
-
- lib/tests/test5.rb
|
161
|
-
- lib/tests/test6.rb
|
162
|
-
- lib/tests/test7.rb
|
163
|
-
- lib/tests/test8.rb
|
164
|
-
- lib/tests/test9.rb
|
165
154
|
- lib/workbook.rb
|
166
155
|
- lib/worksheet.rb
|
167
156
|
- lib/writer/app_writer.rb
|
@@ -184,7 +173,7 @@ files:
|
|
184
173
|
- spec/lib/workbook_spec.rb
|
185
174
|
- spec/lib/worksheet_spec.rb
|
186
175
|
has_rdoc: true
|
187
|
-
homepage: http://github.com/
|
176
|
+
homepage: http://github.com/gilt/rubyXL
|
188
177
|
licenses:
|
189
178
|
- MIT
|
190
179
|
post_install_message:
|
@@ -216,6 +205,6 @@ rubyforge_project:
|
|
216
205
|
rubygems_version: 1.3.7
|
217
206
|
signing_key:
|
218
207
|
specification_version: 3
|
219
|
-
summary: rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx) Documents
|
208
|
+
summary: rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents
|
220
209
|
test_files: []
|
221
210
|
|
data/lib/test.html
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<!doctype html><html><head></head><body><h1 style='text-align:center'>/Users/vbhagwat/Documents/excelTestFiles/threeSheetWorkbook/threeSheetWorkbook.xlsx</h1><h2>Sheet1</h2><table border="1"><tr><td style="color:#000000; background-color:#ffffff">1</td></tr></table><br /><br /><h2>ASD</h2><table border="1"><tr><td style="color:#000000; background-color:#ffffff">1</td><td style="color:#000000; background-color:#ffffff">2</td><td style="color:#000000; background-color:#ffffff">3</td></tr></table><br /><br /><h2>asdf</h2><table border="1"><tr><td style="color:#000000; background-color:#ffffff">1</td><td>----</td><td>----</td></tr><tr><td>----</td><td style="color:#000000; background-color:#ffffff">2</td><td>----</td></tr><tr><td>----</td><td>----</td><td style="color:#000000; background-color:#ffffff">3</td></tr></table><br /><br /></body></html>
|
data/lib/tests/test.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
require '../rubyXL'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'FileUtils'
|
4
|
-
require 'nokogiri'
|
5
|
-
|
6
|
-
|
7
|
-
module RubyXL
|
8
|
-
#writes blank_workbook to .xlsx
|
9
|
-
|
10
|
-
# file_p ath = "/Users/vbhagwat/Documents/excelTestFiles/styledWorkbook/styledWorkbook.xlsx"
|
11
|
-
# file_path = "/Users/vbhagwat/Documents/excelTestFiles/smallFormulaWorkbook2/smallFormulaWorkbook2.xlsx"
|
12
|
-
# file_path = "/Users/vbhagwat/Documents/excelTestFiles/threeSheetWorkbook/threeSheetWorkbook.xlsx"
|
13
|
-
# file_path = "/Users/vbhagwat/Documents/excelTestFiles/numWorkbook2/numWorkbook2.xlsx"
|
14
|
-
file_path = "/Users/vbhagwat/Documents/excelTestFiles/blankWorkbook/blankWorkbook.xlsx"
|
15
|
-
# file_path = '/Users/vbhagwat/Desktop/test2/Archive.xlsx'
|
16
|
-
# file_path = "/Users/vbhagwat/Desktop/5-1_5-20.xlsx"
|
17
|
-
|
18
|
-
# puts 'begin parsing ' + file_path
|
19
|
-
# wb = Parser.parse(file_path)
|
20
|
-
# puts 'completed parsing ' + file_path
|
21
|
-
|
22
|
-
# def initialize(worksheets,filepath,creator=nil,modifier=nil,created_at=nil,modified_at=nil, company=nil, application=nil,appversion=nil,
|
23
|
-
|
24
|
-
|
25
|
-
dirpath = '/Users/vbhagwat/Documents/excelTestFiles'
|
26
|
-
wb = Workbook.new(
|
27
|
-
[], #worksheets
|
28
|
-
file_path, #filepath
|
29
|
-
'Vivek Bhagwat', #creator
|
30
|
-
'Vivek Bhagwat', #modifier
|
31
|
-
'2011-05-16T15:41:00Z', #created_at
|
32
|
-
'Gilt Groupe', #company
|
33
|
-
'Microsoft Macintosh Excel', #application
|
34
|
-
'12.0000')
|
35
|
-
wb.worksheets = [Worksheet.new(wb,'Sheet1',[[nil]])]
|
36
|
-
wb2 = Workbook.new(
|
37
|
-
[], #worksheets
|
38
|
-
file_path, #filepath
|
39
|
-
'Vivek Bhagwat', #creator
|
40
|
-
'Vivek Bhagwat', #modifier
|
41
|
-
'2011-05-16T15:41:00Z', #created_at
|
42
|
-
'Gilt Groupe', #company
|
43
|
-
'Microsoft Macintosh Excel', #application
|
44
|
-
'12.0000')
|
45
|
-
wb.worksheets = [Worksheet.new('Sheet1')]
|
46
|
-
|
47
|
-
wb2[0].sheet_data = [[Cell.new(wb2[0],0,0,'6/8/2011'), Cell.new(wb2[0],0,1,'test2')]]
|
48
|
-
|
49
|
-
# wb = Parser.parse(file_path)
|
50
|
-
file_path = '/Users/vbhagwat/Desktop/test2/Output/blank.xlsx'
|
51
|
-
puts 'begin writing ' + file_path
|
52
|
-
p wb
|
53
|
-
wb.write(file_path)
|
54
|
-
puts 'completed writing ' + file_path
|
55
|
-
|
56
|
-
# file_path = "/Users/vbhagwat/Documents/excelTestFiles/twoSheetWorkbook/twoSheetWorkbook.xlsx"
|
57
|
-
file_path = "/Users/vbhagwat/Documents/excelTestFiles/styledWorkbook7/styledWorkbook7.xlsx"
|
58
|
-
|
59
|
-
wb3 = Parser.parse(file_path)
|
60
|
-
wb3.write('/Users/vbhagwat/Desktop/test2/Output/small_before.xlsx')
|
61
|
-
|
62
|
-
|
63
|
-
# file_path = "/Users/vbhagwat/Desktop/5-1_5-20.xlsx"
|
64
|
-
wb2 = Parser.parse(file_path)
|
65
|
-
file_path = '/Users/vbhagwat/Desktop/test2/Output/small.xlsx'
|
66
|
-
|
67
|
-
wb2.worksheets[0].change_row_font_name(1,'Courier') #0 indexed.
|
68
|
-
wb2.worksheets[0].change_row_font_size(1,30) #0 indexed.
|
69
|
-
cell = wb2.worksheets[0].add_cell(0,0,'A1')
|
70
|
-
wb2.worksheets[0].change_row_fill(0,'00FF00')
|
71
|
-
wb2.worksheets[0].add_cell(0,1,'B1')
|
72
|
-
|
73
|
-
wb2.worksheets[0].change_column_fill(0,'FFFF00')
|
74
|
-
wb2.worksheets[0].change_column_font_size(0,20)
|
75
|
-
wb2.worksheets[0].change_column_width(0,30)
|
76
|
-
wb2.worksheets[0].change_row_height(2,100)
|
77
|
-
|
78
|
-
|
79
|
-
p wb2.worksheets[0].row_styles
|
80
|
-
|
81
|
-
wb2.worksheets[0].insert_row(0)
|
82
|
-
|
83
|
-
wb2.worksheets[0].change_column_width(3,50)
|
84
|
-
|
85
|
-
wb2.worksheets[0].insert_column(0)
|
86
|
-
|
87
|
-
p wb2.worksheets[0].row_styles
|
88
|
-
# raise 'end'
|
89
|
-
|
90
|
-
puts 'begin writing ' + file_path
|
91
|
-
# p wb2
|
92
|
-
wb2[0].change_row_font_color(2,'ffffff')
|
93
|
-
|
94
|
-
wb2.write(file_path)
|
95
|
-
puts 'completed writing ' + file_path
|
96
|
-
|
97
|
-
# app = Writer::AppWriter.new(dirpath, wb)
|
98
|
-
# p app.hash
|
99
|
-
# two = app.hash
|
100
|
-
# puts ''
|
101
|
-
# app.write()
|
102
|
-
#
|
103
|
-
#
|
104
|
-
# str = XmlSimple.xml_out(two)
|
105
|
-
# str = str.gsub(/opt/,'Properties')
|
106
|
-
# puts '..'
|
107
|
-
# p str
|
108
|
-
|
109
|
-
|
110
|
-
end
|
data/lib/tests/test10.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rubyXL'
|
3
|
-
|
4
|
-
@workbook = RubyXL::Workbook.new
|
5
|
-
@worksheet = RubyXL::Worksheet.new(@workbook)
|
6
|
-
@workbook.worksheets[0] = @worksheet
|
7
|
-
(0..10).each do |i|
|
8
|
-
(0..10).each do |j|
|
9
|
-
@worksheet.add_cell(i, j, "#{i}:#{j}")
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
@worksheet.change_column_font_color(0,'ff0000')
|
14
|
-
@worksheet.change_column_font_size(0,"30")
|
15
|
-
|
16
|
-
@workbook.write('/Users/vbhagwat/Desktop/test2/Output/test10.xlsx')
|
data/lib/tests/test2.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'xmlsimple'
|
3
|
-
require 'zip/zip'
|
4
|
-
require 'FileUtils'
|
5
|
-
require 'zip/zipfilesystem'
|
6
|
-
require 'zip'
|
7
|
-
|
8
|
-
module RubyXL
|
9
|
-
#takes /Users/vbhagwat/Desktop/test1/Workbook1.xlsx
|
10
|
-
#copies, unzips, zips
|
11
|
-
|
12
|
-
# #takes path of directoy to be compressed
|
13
|
-
# #writes zip in that directory
|
14
|
-
# def compress(path)
|
15
|
-
# puts 'path'
|
16
|
-
# p path
|
17
|
-
# path.sub!(%r[/$],'')
|
18
|
-
# p path
|
19
|
-
# archive = File.join(path,File.basename(path))+'.zip'
|
20
|
-
# puts 'archive'
|
21
|
-
# p archive
|
22
|
-
# FileUtils.rm archive, :force=>true
|
23
|
-
# Zip::ZipFile.open(archive, 'w') do |zipfile|
|
24
|
-
# Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
|
25
|
-
# puts 'here'
|
26
|
-
# p file.to_s()
|
27
|
-
# temp = file
|
28
|
-
# p temp.sub(path+'/','')
|
29
|
-
# zipfile.add(file.sub(path+'/',''),file)
|
30
|
-
# end
|
31
|
-
# end
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# #unzips file
|
35
|
-
# def unzip(zipPath,zipDirPath)
|
36
|
-
# Zip::ZipFile.open(zipPath) { |zip_file|
|
37
|
-
# zip_file.each { |f|
|
38
|
-
# fpath = File.join(zipDirPath, f.name)
|
39
|
-
# FileUtils.mkdir_p(File.dirname(fpath))
|
40
|
-
# zip_file.extract(f, fpath) unless File.exist?(fpath)
|
41
|
-
# }
|
42
|
-
# }
|
43
|
-
# end
|
44
|
-
|
45
|
-
z = MyZip.new
|
46
|
-
|
47
|
-
|
48
|
-
dirPath = '/Users/vbhagwat/Desktop/test2/'
|
49
|
-
filePath = dirPath + 'Workbook1.xlsx'
|
50
|
-
zipDirPath = dirPath+'Workbook1/'
|
51
|
-
zipPath = zipDirPath + 'Workbook1.zip'
|
52
|
-
|
53
|
-
FileUtils.mkdir_p(dirPath+'Workbook1')
|
54
|
-
FileUtils.cp(filePath,zipPath)
|
55
|
-
|
56
|
-
z.unzip(zipPath,zipDirPath)
|
57
|
-
#TODO test if xml_in then xml_out corrupts it
|
58
|
-
# FileUtils.rm(zipPath) #removes zip file created
|
59
|
-
|
60
|
-
#commented out because i copy this anyway
|
61
|
-
# contents = XmlSimple.xml_in(zipDirPath + '[Content_Types].xml')
|
62
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
63
|
-
# file = File.new(zipDirPath+'[Content_Types].xml', 'w+')
|
64
|
-
# file.write(contents)
|
65
|
-
# file.close
|
66
|
-
|
67
|
-
# contents = XmlSimple.xml_in(zipDirPath+'docProps/app.xml')
|
68
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
69
|
-
# file = File.new(zipDirPath+'docProps/app.xml', 'w+')
|
70
|
-
# file.write(contents)
|
71
|
-
# file.close
|
72
|
-
#
|
73
|
-
# contents = XmlSimple.xml_in(zipDirPath+'docProps/core.xml')
|
74
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
75
|
-
# file = File.new(zipDirPath+'docProps/core.xml', 'w+')
|
76
|
-
# file.write(contents)
|
77
|
-
# file.close
|
78
|
-
#
|
79
|
-
# contents = XmlSimple.xml_in(zipDirPath+'xl/_rels/workbook.xml.rels')
|
80
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
81
|
-
# file = File.new(zipDirPath+'xl/_rels/workbook.xml.rels', 'w+')
|
82
|
-
# file.write(contents)
|
83
|
-
# file.close
|
84
|
-
#
|
85
|
-
# contents = XmlSimple.xml_in(zipDirPath+'xl/styles.xml')
|
86
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
87
|
-
# file = File.new(zipDirPath+'xl/styles.xml', 'w+')
|
88
|
-
# file.write(contents)
|
89
|
-
# file.close
|
90
|
-
#
|
91
|
-
# contents = XmlSimple.xml_in(zipDirPath+'xl/workbook.xml')
|
92
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
93
|
-
# file = File.new(zipDirPath+'xl/workbook.xml', 'w+')
|
94
|
-
# file.write(contents)
|
95
|
-
# file.close
|
96
|
-
#
|
97
|
-
# #commented out because i copy this anyway
|
98
|
-
# # contents = XmlSimple.xml_in(zipDirPath+'xl/theme/theme1.xml')
|
99
|
-
# # contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
100
|
-
# # file = File.new(zipDirPath+'[Content_Types].xml', 'w+')
|
101
|
-
# # file.write(contents)
|
102
|
-
# # file.close
|
103
|
-
#
|
104
|
-
# contents = XmlSimple.xml_in(zipDirPath+'xl/worksheets/sheet1.xml')
|
105
|
-
# contents = XmlSimple.xml_out(contents).gsub(/<\/?opt>/,'')
|
106
|
-
# file = File.new(zipDirPath+'xl/worksheets/sheet1.xml', 'w+')
|
107
|
-
# file.write(contents)
|
108
|
-
# file.close
|
109
|
-
|
110
|
-
#TODO manually reorder the xml tags to correlate, then compress using this compression method,
|
111
|
-
#(not archive utility), then see if that xlsx file opens
|
112
|
-
|
113
|
-
z.compress('/Users/vbhagwat/Desktop/test2/Workbook1/')
|
114
|
-
|
115
|
-
|
116
|
-
# compress(dirPath)
|
117
|
-
|
118
|
-
end
|
data/lib/tests/test3.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'FileUtils'
|
3
|
-
require 'writer'
|
4
|
-
|
5
|
-
|
6
|
-
module RubyXL
|
7
|
-
|
8
|
-
def convertToIndex(cellString)
|
9
|
-
index = Array.new(2)
|
10
|
-
index[0]=-1
|
11
|
-
index[1]=-1
|
12
|
-
if(cellString =~ /^([A-Z]+)(\d+)/)
|
13
|
-
one = $1.to_s()
|
14
|
-
row = Integer($2) - 1 #-1 for 0 indexing
|
15
|
-
col = 0
|
16
|
-
i = 0
|
17
|
-
one = one.reverse #because of 26^i calculation
|
18
|
-
one.each_byte do |c|
|
19
|
-
intVal = c - 64 #converts A to 1 (0, actually)
|
20
|
-
col += intVal * 26**(i)
|
21
|
-
i=i+1
|
22
|
-
end
|
23
|
-
col -= 1 #zer0 index
|
24
|
-
index[0] = row
|
25
|
-
index[1] = col
|
26
|
-
end
|
27
|
-
index
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
#TODO FIX THIS
|
32
|
-
def convertToCell(row, col)
|
33
|
-
puts "input = (#{row}, #{col})"
|
34
|
-
#convert col to letter, convert row to row-1, join
|
35
|
-
rowString = (row + 1).to_s #+1 for 0 indexing
|
36
|
-
colString = ''
|
37
|
-
unless col == 0
|
38
|
-
colLength = 1+Integer(Math.log(col) / Math.log(26)) #opposite of 26**
|
39
|
-
else
|
40
|
-
colLength = 1
|
41
|
-
end
|
42
|
-
|
43
|
-
puts "colLength = #{colLength}"
|
44
|
-
1.upto(colLength) do |i|
|
45
|
-
puts "i = #{i}"
|
46
|
-
puts "col = #{col}"
|
47
|
-
puts "26**(colLength-i) = #{26**(colLength-i)}"
|
48
|
-
|
49
|
-
if i == colLength
|
50
|
-
col+=1
|
51
|
-
end
|
52
|
-
|
53
|
-
if col >= 26**(colLength-i)
|
54
|
-
intVal = col / 26**(colLength-i) #+1 for 0 indexing
|
55
|
-
intVal += 64 #converts 1 to A, etc.
|
56
|
-
puts "intVal = #{intVal}"
|
57
|
-
puts "col = #{col}, #{intVal.chr}"
|
58
|
-
|
59
|
-
# colString = intVal.chr + colString
|
60
|
-
colString += intVal.chr
|
61
|
-
|
62
|
-
puts "colString = #{colString}"
|
63
|
-
col -= (intVal-64)*26**(colLength-i)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
p colString
|
67
|
-
p rowString
|
68
|
-
|
69
|
-
colString+rowString
|
70
|
-
end
|
71
|
-
row = 0
|
72
|
-
col = 16168
|
73
|
-
|
74
|
-
puts "(#{row},#{col})=>#{convertToCell(row,col)}"
|
75
|
-
|
76
|
-
end
|
data/lib/tests/test4.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'zip/zip'
|
3
|
-
# require 'File'
|
4
|
-
require 'FileUtils'
|
5
|
-
|
6
|
-
module RubyXL
|
7
|
-
# class Test4
|
8
|
-
def write_content_types()
|
9
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
10
|
-
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Default Extension="jpeg" ContentType="image/jpeg"/><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/></Types>'
|
11
|
-
end
|
12
|
-
|
13
|
-
def write_root_rels()
|
14
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
15
|
-
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" Target="docProps/thumbnail.jpeg"/></Relationships>'
|
16
|
-
end
|
17
|
-
|
18
|
-
def write_core_properties()
|
19
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
20
|
-
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:creator>Vivek Bhagwat</dc:creator><cp:lastModifiedBy>Vivek Bhagwat</cp:lastModifiedBy><dcterms:created xsi:type="dcterms:W3CDTF">2011-05-25T19:40:48Z</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">2011-05-25T19:40:51Z</dcterms:modified></cp:coreProperties>'
|
21
|
-
end
|
22
|
-
|
23
|
-
def write_app_properties()
|
24
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
25
|
-
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Application>Microsoft Macintosh Excel</Application><DocSecurity>0</DocSecurity><ScaleCrop>false</ScaleCrop><HeadingPairs><vt:vector size="2" baseType="variant"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs><TitlesOfParts><vt:vector size="1" baseType="lpstr"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts><Company>Gilt Groupe</Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>12.0000</AppVersion></Properties>'
|
26
|
-
end
|
27
|
-
|
28
|
-
def write_workbook_rels()
|
29
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
30
|
-
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>'
|
31
|
-
end
|
32
|
-
|
33
|
-
def write_workbook()
|
34
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
35
|
-
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505"/><workbookPr date1904="1" showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="-20" yWindow="-20" windowWidth="34400" windowHeight="22000" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><calcPr calcId="130407" concurrentCalc="0"/><extLst><ext xmlns:mx="http://schemas.microsoft.com/office/mac/excel/2008/main" uri="http://schemas.microsoft.com/office/mac/excel/2008/main"><mx:ArchID Flags="2"/></ext></extLst></workbook>'
|
36
|
-
end
|
37
|
-
|
38
|
-
#only writes sheet1.xml
|
39
|
-
def write_worksheet()
|
40
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
41
|
-
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mv="urn:schemas-microsoft-com:mac:vml" mc:Ignorable="mv" mc:PreserveAttributes="mv:*"><dimension ref="A1"/><sheetViews><sheetView tabSelected="1" view="pageLayout" workbookViewId="0"/></sheetViews><sheetFormatPr baseColWidth="10" defaultRowHeight="13"/><sheetData/><phoneticPr fontId="1" type="noConversion"/><pageMargins left="0.75" right="0.75" top="1" bottom="1" header="0.5" footer="0.5"/><pageSetup orientation="portrait" horizontalDpi="4294967292" verticalDpi="4294967292"/><extLst><ext xmlns:mx="http://schemas.microsoft.com/office/mac/excel/2008/main" uri="http://schemas.microsoft.com/office/mac/excel/2008/main"><mx:PLV Mode="1" OnePage="0" WScale="0"/></ext></extLst></worksheet>'
|
42
|
-
end
|
43
|
-
|
44
|
-
def write_styles()
|
45
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
46
|
-
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fonts count="2"><font><sz val="10"/><name val="Verdana"/></font><font><sz val="8"/><name val="Verdana"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium9"/></styleSheet>'
|
47
|
-
end
|
48
|
-
|
49
|
-
def write_theme()
|
50
|
-
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
51
|
-
<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="100000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val="100000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults><a:spDef><a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style></a:spDef><a:lnDef><a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style></a:lnDef></a:objectDefaults><a:extraClrSchemeLst/></a:theme>'
|
52
|
-
end
|
53
|
-
|
54
|
-
filepath = '/Users/vbhagwat/Desktop/blankWorkbook.xlsx'
|
55
|
-
dirpath = ''
|
56
|
-
if(filepath =~ /((.|\s)*)\.xlsx$/)
|
57
|
-
dirpath = $1.to_s()
|
58
|
-
end
|
59
|
-
filename = ''
|
60
|
-
if(filepath =~ /\/((.|\s)*)\/((.|\s)*)\.xlsx$/)
|
61
|
-
filename = $3.to_s()
|
62
|
-
end
|
63
|
-
# p filepath
|
64
|
-
# p dirpath
|
65
|
-
# p filename
|
66
|
-
|
67
|
-
zippath = dirpath + '/' + filename + '.zip'
|
68
|
-
File.unlink(zippath) if File.exists?(zippath)
|
69
|
-
Zip::ZipFile.open(zippath, Zip::ZipFile::CREATE) do |zipfile|
|
70
|
-
zipfile.get_output_stream('[Content_Types].xml') {|f| f.puts(write_content_types())}
|
71
|
-
|
72
|
-
zipfile.get_output_stream('_rels/.rels') {|f| f.puts(write_root_rels())}
|
73
|
-
|
74
|
-
zipfile.get_output_stream('docProps/app.xml') {|f| f.puts(write_app_properties())}
|
75
|
-
|
76
|
-
zipfile.get_output_stream('docProps/core.xml') {|f| f.puts(write_core_properties())}
|
77
|
-
|
78
|
-
zipfile.get_output_stream('xl/theme/theme1.xml') {|f| f.puts(write_theme())}
|
79
|
-
|
80
|
-
zipfile.get_output_stream('xl/_rels/workbook.xml.rels') {|f| f.puts(write_workbook_rels())}
|
81
|
-
|
82
|
-
zipfile.get_output_stream('xl/workbook.xml') {|f| f.puts(write_workbook())}
|
83
|
-
|
84
|
-
zipfile.get_output_stream('xl/styles.xml') {|f| f.puts(write_styles())}
|
85
|
-
|
86
|
-
zipfile.get_output_stream('xl/worksheets/sheet1.xml') {|f| f.puts(write_worksheet())}
|
87
|
-
|
88
|
-
zipfile.add('docProps/thumbnail.jpeg','/Users/vbhagwat/Desktop/test2/Workbook1/docProps/thumbnail.jpeg')
|
89
|
-
# zipfile.get_output_stream('docProps/thumbnail.jpeg') {|f| }
|
90
|
-
end
|
91
|
-
# end
|
92
|
-
end
|
data/lib/tests/test5.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
require '../rubyXL'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'nokogiri'
|
4
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'Hash'))
|
5
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'cell'))
|
6
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'workbook'))
|
7
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'parser'))
|
8
|
-
|
9
|
-
# module RubyXL
|
10
|
-
file_path = '/Users/vbhagwat/Documents/excelTestFiles/styledWorkbook2/styledWorkbook2.xlsx'
|
11
|
-
wb = RubyXL::Parser.parse(file_path)
|
12
|
-
puts "parsed #{file_path}"
|
13
|
-
p wb.cell_xfs
|
14
|
-
cell = wb.worksheets[0].sheet_data[0][0]
|
15
|
-
cell2 = wb.worksheets[0].sheet_data[1][1]
|
16
|
-
cell3 = wb.worksheets[0].sheet_data[0][2]
|
17
|
-
|
18
|
-
cell4 = wb.worksheets[0].add_cell(4,4,'test')
|
19
|
-
cell5 = wb.worksheets[0].add_cell(4,4,'test2',nil,false)
|
20
|
-
|
21
|
-
# cells = Array.new()
|
22
|
-
#
|
23
|
-
# cells << Cell.new(0,3,'black', nil,'str') #8
|
24
|
-
# cells << Cell.new(0,4,'white',nil,'str')
|
25
|
-
# cells << Cell.new(0,5,'red',nil,'str')
|
26
|
-
# cells << Cell.new(0,6,'brightgreen',nil,'str')
|
27
|
-
# cells << Cell.new(0,7,'blue',nil,'str')
|
28
|
-
# cells << Cell.new(0,8,'yellow',nil,'str')
|
29
|
-
# cells << Cell.new(0,9,'magenta',nil,'str')
|
30
|
-
# cells << Cell.new(0,10,'cyan',nil,'str')
|
31
|
-
# cells << Cell.new(0,11,'darkred',nil,'str')
|
32
|
-
# cells << Cell.new(0,12,'green',nil,'str')
|
33
|
-
# cells << Cell.new(0,13,'darkblue',nil,'str')
|
34
|
-
# cells << Cell.new(0,14,'darkyellow',nil,'str')
|
35
|
-
# cells << Cell.new(0,15,'purple',nil,'str')
|
36
|
-
# cells << Cell.new(0,16,'teal',nil,'str')
|
37
|
-
# cells << Cell.new(0,17,'gray25',nil,'str')
|
38
|
-
# cells << Cell.new(0,18,'gray50',nil,'str') #23
|
39
|
-
# 19.upto(58) do |ind|
|
40
|
-
# cells << Cell.new(0,ind,(ind+5).to_s,nil,'str')
|
41
|
-
# end
|
42
|
-
#
|
43
|
-
# cells.each_with_index do |c,i|
|
44
|
-
# wb.worksheets[0].sheet_data[0] << c
|
45
|
-
# c.change_fill((i+8).to_s)
|
46
|
-
# end
|
47
|
-
def print_stuff(wb)
|
48
|
-
puts 'begin print_stuff'
|
49
|
-
puts ''
|
50
|
-
puts ''
|
51
|
-
puts ''
|
52
|
-
p wb.cell_xfs[:xf][0]
|
53
|
-
puts ''
|
54
|
-
puts ''
|
55
|
-
puts ''
|
56
|
-
puts 'end print_stuff'
|
57
|
-
end
|
58
|
-
|
59
|
-
print_stuff(wb)
|
60
|
-
cell.change_font_name('Verdana')
|
61
|
-
print_stuff(wb)
|
62
|
-
cell2.change_font_size(30)
|
63
|
-
print_stuff(wb)
|
64
|
-
cell.change_fill('ff0000')
|
65
|
-
print_stuff(wb)
|
66
|
-
wb.worksheets[0].change_row_font_name(1,'Courier')
|
67
|
-
print_stuff(wb)
|
68
|
-
wb.worksheets[0].change_row_fill(1,'00ff00')
|
69
|
-
print_stuff(wb)
|
70
|
-
wb.worksheets[0].change_column_font_size(0,20)
|
71
|
-
print_stuff(wb)
|
72
|
-
cell.change_font_bold(false)
|
73
|
-
print_stuff(wb)
|
74
|
-
cell2.change_font_underline(true)
|
75
|
-
print_stuff(wb)
|
76
|
-
cell3.change_fill('000000')
|
77
|
-
print_stuff(wb)
|
78
|
-
cell3.change_font_name('Verddddana')
|
79
|
-
print_stuff(wb)
|
80
|
-
# cell3.change_fill('52')
|
81
|
-
|
82
|
-
wb.write('/Users/vbhagwat/Desktop/test2/Output/cell.xlsx')
|
83
|
-
|
84
|
-
p wb.style_corrector
|
85
|
-
|
86
|
-
print_stuff(wb)
|
87
|
-
puts 'completed writing /Users/vbhagwat/Desktop/test2/Output/cell.xlsx'
|
88
|
-
#TODO
|
89
|
-
|
90
|
-
# end
|
data/lib/tests/test6.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require '../rubyXL'
|
2
|
-
require 'rubygems'
|
3
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'workbook'))
|
4
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'parser'))
|
5
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'color'))
|
6
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'cell'))
|
7
|
-
|
8
|
-
module RubyXL
|
9
|
-
wb = Workbook.new([],nil)
|
10
|
-
wb.worksheets = [Worksheet.new(wb,'Sheet1')]
|
11
|
-
cell = wb.worksheets[0].add_cell(0,0,'1.00.0')
|
12
|
-
# cell.change_font_italics(false)
|
13
|
-
# p cell.is_italicized(wb)
|
14
|
-
# cell.change_font_bold(false)
|
15
|
-
# p cell.is_bolded(wb)
|
16
|
-
# cell.change_font_underline(false)
|
17
|
-
# p cell.is_underlined(wb)
|
18
|
-
# p cell.font_name(wb)
|
19
|
-
# p cell.font_size(wb)
|
20
|
-
# p cell.font_color(wb)
|
21
|
-
# p cell.fill_color(wb)
|
22
|
-
|
23
|
-
wb.worksheets[0].add_cell(2,5,'$1,000.00')
|
24
|
-
wb.worksheets[0].add_cell(3,3,'6/14/11')
|
25
|
-
wb.worksheets[0].add_cell(4,0,1)
|
26
|
-
wb.worksheets[0].add_cell(4,1,2)
|
27
|
-
wb.worksheets[0].add_cell(4,2,3)
|
28
|
-
wb.worksheets[0].add_cell(4,3,4)
|
29
|
-
wb.worksheets[0].add_cell(4,4,0,'AVERAGE(A5:D5)')
|
30
|
-
|
31
|
-
cell.change_font_color('ff0000')
|
32
|
-
|
33
|
-
wb.write('/Users/vbhagwat/Desktop/test2/Output/nums.xlsx')
|
34
|
-
|
35
|
-
|
36
|
-
wb2 = Parser.parse('/Users/vbhagwat/Desktop/5-1_5-20.xlsx')
|
37
|
-
# wb2.worksheets[0].merge_cells(0,1,0,2)
|
38
|
-
# wb2.worksheets[0].merge_cells(0,0,0,1)
|
39
|
-
#.change_font_size(30)
|
40
|
-
wb2.write('/Users/vbhagwat/Desktop/test2/Output/nums2.xlsx')
|
41
|
-
|
42
|
-
wb3 = Parser.parse('/Users/vbhagwat/Documents/excelTestFiles/paneWorkbook2/paneWorkbook2.xlsx')
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
# p Color.find(8)
|
47
|
-
# c = Color::ColorProperties
|
48
|
-
# p c.has_value?({:hex=>'#000000', :name=>"black"})
|
49
|
-
# p Color.find('black')
|
50
|
-
end
|
data/lib/tests/test7.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require '../rubyXL'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'rubyXL'
|
4
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'workbook'))
|
5
|
-
|
6
|
-
module RubyXL
|
7
|
-
wb = Workbook.new([],nil)
|
8
|
-
wb.worksheets = [Worksheet.new(wb,'Sheet1')]
|
9
|
-
|
10
|
-
cell = wb.worksheets[0].add_cell(0,0,'A1')
|
11
|
-
cell2 = wb.worksheets[0].add_cell(0,1,'B1')
|
12
|
-
cell3 = wb.worksheets[0].add_cell(0,5,'F1')
|
13
|
-
|
14
|
-
wb.worksheets[0].sheet_data[0].each do |c|
|
15
|
-
unless c.nil?
|
16
|
-
c.change_font_bold(true)
|
17
|
-
c.change_font_underline(true)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
cell.change_horizontal_alignment('center')
|
22
|
-
wb.worksheets[0].change_row_horizontal_alignment(0,'justify')
|
23
|
-
wb.worksheets[0].change_row_vertical_alignment(0,'center')
|
24
|
-
|
25
|
-
wb.worksheets[0].change_row_fill(0,'FF0000')
|
26
|
-
cell2.change_fill('0000FF')
|
27
|
-
|
28
|
-
cell4 = wb.worksheets[0].add_cell(0,3,'D1')
|
29
|
-
puts '
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
'
|
34
|
-
p wb.fills
|
35
|
-
puts '
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
'
|
41
|
-
cell4.change_fill('A43502')
|
42
|
-
|
43
|
-
cell5 = wb.worksheets[0].add_cell(1,0,'A2')
|
44
|
-
wb.worksheets[0].change_row_fill(1,'00FF00')
|
45
|
-
cell5.change_fill('FF0000')
|
46
|
-
|
47
|
-
wb.write('/Users/vbhagwat/Desktop/test2/Output/test7.xlsx')
|
48
|
-
end
|
data/lib/tests/test8.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require '../rubyXL'
|
2
|
-
require 'rubygems'
|
3
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'workbook'))
|
4
|
-
# require File.expand_path(File.join(File.dirname(__FILE__),'parser'))
|
5
|
-
|
6
|
-
module RubyXL
|
7
|
-
|
8
|
-
wb = Parser.parse('/Users/vbhagwat/Desktop/macros.xlsm', false)
|
9
|
-
wb.write('/Users/vbhagwat/Desktop/test2/Output/macros.xlsm')
|
10
|
-
puts "completed writing /Users/vbhagwat/Desktop/test2/Output/macros.xlsm"
|
11
|
-
|
12
|
-
end
|
data/lib/tests/test9.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'nokogiri'
|
3
|
-
require File.expand_path(File.join(File.dirname(__FILE__),'Hash'))
|
4
|
-
|
5
|
-
module RubyXL
|
6
|
-
testWb = Nokogiri::XML.parse(File.read('/Users/vbhagwat/Desktop/testWorkbook.xml'))
|
7
|
-
testStyles = Nokogiri::XML.parse(File.read('/Users/vbhagwat/Desktop/testStyles.xml'))
|
8
|
-
|
9
|
-
puts "testWb.css('workbook definedNames')[0]"
|
10
|
-
p testWb.css('workbook definedNames')[0]
|
11
|
-
puts '/css'
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
Hash.xml_node_to_hash(test_wb.css('workbook definedNames')[0])
|
17
|
-
|
18
|
-
puts '
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
'
|
39
|
-
h= Hash.xml_node_to_hash(test_styles.css('styleSheet cellXfs')[0])
|
40
|
-
|
41
|
-
puts '
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
'
|
48
|
-
p h
|
49
|
-
#
|
50
|
-
# :cellXfs=>{
|
51
|
-
# :xf=>[{
|
52
|
-
# :attributes=>{
|
53
|
-
# :xfId=>0, :fontId=>0, :numFmtId=>0, :borderId=>0, :fillId=>0}},
|
54
|
-
# {:attributes=>{
|
55
|
-
# :applyFill=>0, :applyFont=>0, :applyAlignment=>1, :xfId=>0, :fontId=>0,
|
56
|
-
# :numFmtId=>0, :applyNumberFormat=>0, :borderId=>0, :applyBorder=>0, :fillId=>0},
|
57
|
-
# :alignment=>{:attributes=>{:horizontal=>"center"}}}],
|
58
|
-
#
|
59
|
-
# :attributes=>{:count=>2}}
|
60
|
-
end
|