asposecellsjava 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +39 -0
- data/Rakefile +2 -0
- data/asposecellsjava.gemspec +27 -0
- data/config/aspose.yml +5 -0
- data/data/Book1.xls +0 -0
- data/data/index.html +26 -0
- data/lib/asposecellsjava.rb +71 -0
- data/lib/asposecellsjava/asposecells.rb +18 -0
- data/lib/asposecellsjava/converter.rb +213 -0
- data/lib/asposecellsjava/copyworksheets.rb +42 -0
- data/lib/asposecellsjava/displayhidegridlines.rb +23 -0
- data/lib/asposecellsjava/displayhiderowcolumnheaders.rb +23 -0
- data/lib/asposecellsjava/displayhidescrollbars.rb +21 -0
- data/lib/asposecellsjava/displayhidetabs.rb +18 -0
- data/lib/asposecellsjava/document.rb +67 -0
- data/lib/asposecellsjava/encrypt.rb +26 -0
- data/lib/asposecellsjava/freezepanes.rb +22 -0
- data/lib/asposecellsjava/hideunhideworksheet.rb +23 -0
- data/lib/asposecellsjava/managingworksheets.rb +107 -0
- data/lib/asposecellsjava/pagebreakpreview.rb +23 -0
- data/lib/asposecellsjava/pagebreaks.rb +61 -0
- data/lib/asposecellsjava/pagesetup.rb +54 -0
- data/lib/asposecellsjava/protection.rb +63 -0
- data/lib/asposecellsjava/rowsandcolumns.rb +392 -0
- data/lib/asposecellsjava/splitpanes.rb +21 -0
- data/lib/asposecellsjava/version.rb +3 -0
- data/lib/asposecellsjava/zoomfactor.rb +22 -0
- data/samples/test.rb +8 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cbaa278efed46b4db09f23bae691ff0cda98c031
|
4
|
+
data.tar.gz: f9fdba855bb7035d44b43c3e7965e48b6a148acd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb4d7ee8d45c705e8e7ffebe2574b506775fb6fbd7e3ccc9c3e111ee9ac91766c3160971a482ffb1cdba33d58ba1117dbce17a2dc80c6a116baddaccd316ba1d
|
7
|
+
data.tar.gz: 60206355c79e7fbfd3c4cc9cace000b31cd8744c2e56708b20e29e076bf3bb5a375037238dd5aa7a3d6ac9b11a1a44d87b82b48ef559e85bebfd9a87665913fa
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2001-2015 Aspose Pty Ltd
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Aspose_Cells_Java_For_Ruby
|
2
|
+
Aspose Cells Java for Ruby is a gem that demonstrates / provides the Aspose.Cells for Java API usage examples in Ruby by using Rjb - Ruby Java Bridge.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
Add this line to your application's Gemfile:
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
gem 'asposecellsjava'
|
10
|
+
```
|
11
|
+
|
12
|
+
And then execute:
|
13
|
+
|
14
|
+
$ bundle
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
|
18
|
+
$ gem install asposecellsjava
|
19
|
+
|
20
|
+
To download Aspose.Cells for Java API to be used with these examples through RJB, Please navigate to:
|
21
|
+
|
22
|
+
http://www.aspose.com/community/files/72/java-components/aspose.cells-for-java/
|
23
|
+
|
24
|
+
For most complete documentation of the project, check Aspose.Cells Java for Ruby confluence wiki link:
|
25
|
+
|
26
|
+
http://www.aspose.com/docs/display/cellssjava/3.+Aspose.Cells+Java+For+Ruby
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require '../lib/asposecellsjava'
|
32
|
+
include Asposecellsjava
|
33
|
+
include Asposecellsjava::HideUnhideWorksheet
|
34
|
+
initialize_aspose_cells
|
35
|
+
```
|
36
|
+
Lets understand the above code
|
37
|
+
* The first line makes sure that the aspose cells is loaded and available
|
38
|
+
* Include the files that are required to access the aspose cells
|
39
|
+
* Initialize the libraries. The aspose JAVA classes are loaded from the path provided in the aspose.yml file
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'asposecellsjava/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'asposecellsjava'
|
8
|
+
spec.version = Asposecellsjava::VERSION
|
9
|
+
spec.authors = ['Aspose Marketplace']
|
10
|
+
spec.email = ['marketplace@aspose.com']
|
11
|
+
spec.summary = %q{A Ruby gem to work with aspose.cells libraries}
|
12
|
+
spec.description = %q{AsposeCellsJava is a Ruby gem that can help working with Aspose.Cells libraries}
|
13
|
+
spec.homepage = 'https://github.com/asposecells/Aspose_Cells_Java/tree/master/Plugins/Aspose_Cells_Java_for_Ruby'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
|
25
|
+
spec.add_dependency 'rjb', '~> 1.5.2'
|
26
|
+
|
27
|
+
end
|
data/config/aspose.yml
ADDED
data/data/Book1.xls
ADDED
Binary file
|
data/data/index.html
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Sample "Hello, World" Application</title>
|
4
|
+
</head>
|
5
|
+
<body bgcolor=white>
|
6
|
+
|
7
|
+
<table border="0" cellpadding="10">
|
8
|
+
<tr>
|
9
|
+
<td>
|
10
|
+
<img src="images/springsource.png">
|
11
|
+
</td>
|
12
|
+
<td>
|
13
|
+
<h1>Sample "Hello, World" Application</h1>
|
14
|
+
</td>
|
15
|
+
</tr>
|
16
|
+
</table>
|
17
|
+
|
18
|
+
<p>This is the home page for the HelloWorld Web application. </p>
|
19
|
+
<p>To prove that they work, you can execute either of the following links:
|
20
|
+
<ul>
|
21
|
+
<li>To a <a href="hello.jsp">JSP page</a>.
|
22
|
+
<li>To a <a href="hello">servlet</a>.
|
23
|
+
</ul>
|
24
|
+
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require_relative 'asposecellsjava/version'
|
2
|
+
require_relative 'asposecellsjava/asposecells'
|
3
|
+
require 'logger'
|
4
|
+
require 'rjb'
|
5
|
+
|
6
|
+
module Asposecellsjava
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_accessor :aspose_cells_config
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize_aspose_cells
|
13
|
+
aspose_jars_dir = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['jar_dir'] : nil
|
14
|
+
aspose_license_path = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['license_path'] : nil
|
15
|
+
jvm_args = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['jvm_args'] : nil
|
16
|
+
|
17
|
+
load_aspose_jars(aspose_jars_dir, jvm_args)
|
18
|
+
load_aspose_license(aspose_license_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def load_aspose_license(aspose_license_path)
|
22
|
+
if aspose_license_path && File.exist?(aspose_license_path)
|
23
|
+
set_license(File.join(aspose_license_path))
|
24
|
+
else
|
25
|
+
logger = Logger.new(STDOUT)
|
26
|
+
logger.level = Logger::WARN
|
27
|
+
logger.warn('Using the non licensed aspose jar. Please specify path to your aspose license directory in config/aspose.yml file!')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def load_aspose_jars(aspose_jars_dir, jvm_args)
|
32
|
+
if aspose_jars_dir && File.exist?(aspose_jars_dir)
|
33
|
+
jardir = File.join(aspose_jars_dir, '**', '*.jar')
|
34
|
+
else
|
35
|
+
jardir = File.join(File.dirname(File.dirname(__FILE__)), 'jars', '**', '*.jar')
|
36
|
+
end
|
37
|
+
|
38
|
+
if jvm_args
|
39
|
+
args = jvm_args.split(' ') << '-Djava.awt.headless=true'
|
40
|
+
logger = Logger.new(STDOUT)
|
41
|
+
logger.level = Logger::DEBUG
|
42
|
+
logger.debug("JVM args : #{args}")
|
43
|
+
Rjb::load(classpath = Dir.glob(jardir).join(':'), jvmargs=args)
|
44
|
+
else
|
45
|
+
Rjb::load(classpath = Dir.glob(jardir).join(':'), jvmargs=['-Djava.awt.headless=true'])
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
def input_file(file)
|
51
|
+
Rjb::import('java.io.FileInputStream').new(file)
|
52
|
+
end
|
53
|
+
|
54
|
+
def set_license(aspose_license_file)
|
55
|
+
begin
|
56
|
+
fstream = input_file(aspose_license_file)
|
57
|
+
license = Rjb::import('com.aspose.api.License').new()
|
58
|
+
license.setLicense(fstream)
|
59
|
+
rescue Exception => ex
|
60
|
+
logger = Logger.new(STDOUT)
|
61
|
+
logger.level = Logger::ERROR
|
62
|
+
logger.error("Could not load the license file : #{ex}")
|
63
|
+
fstream.close() if fstream
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.configure_aspose_cells config
|
68
|
+
Asposecellsjava.aspose_cells_config = config
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'hideunhideworksheet'
|
2
|
+
require_relative 'displayhidetabs'
|
3
|
+
require_relative 'displayhidescrollbars'
|
4
|
+
require_relative 'displayhidegridlines'
|
5
|
+
require_relative 'displayhiderowcolumnheaders'
|
6
|
+
require_relative 'pagebreakpreview'
|
7
|
+
require_relative 'zoomfactor'
|
8
|
+
require_relative 'freezepanes'
|
9
|
+
require_relative 'splitpanes'
|
10
|
+
require_relative 'managingworksheets'
|
11
|
+
require_relative 'pagebreaks'
|
12
|
+
require_relative 'copyworksheets'
|
13
|
+
require_relative 'converter'
|
14
|
+
require_relative 'encrypt'
|
15
|
+
require_relative 'document'
|
16
|
+
require_relative 'rowsandcolumns'
|
17
|
+
require_relative 'protection'
|
18
|
+
require_relative 'pagesetup'
|
@@ -0,0 +1,213 @@
|
|
1
|
+
module Asposecellsjava
|
2
|
+
module Converter
|
3
|
+
def initialize()
|
4
|
+
@data_dir = File.dirname(File.dirname(File.dirname(__FILE__))) + '/data/'
|
5
|
+
|
6
|
+
# Instantiating a Workbook object by excel file path
|
7
|
+
workbook = Rjb::import('com.aspose.cells.Workbook').new(@data_dir + 'Book1.xls')
|
8
|
+
|
9
|
+
# Converting Excel to PDF
|
10
|
+
excel_to_pdf(workbook)
|
11
|
+
|
12
|
+
# Converting Chart to Image
|
13
|
+
chart_to_image()
|
14
|
+
|
15
|
+
# Converting Worksheet to Image
|
16
|
+
worksheet_to_image(workbook)
|
17
|
+
|
18
|
+
# Converting Worksheet to SVG
|
19
|
+
worksheet_to_svg(workbook)
|
20
|
+
|
21
|
+
# Converting Worksheet to MHTML
|
22
|
+
worksheet_to_mhtml(workbook)
|
23
|
+
|
24
|
+
# Converting Worksheet to HTML
|
25
|
+
worksheet_to_html(workbook)
|
26
|
+
|
27
|
+
# Converting HTML to Excel
|
28
|
+
html_to_excel()
|
29
|
+
end
|
30
|
+
|
31
|
+
def excel_to_pdf(workbook)
|
32
|
+
save_format = Rjb::import('com.aspose.cells.SaveFormat')
|
33
|
+
|
34
|
+
# Save the document in PDF format
|
35
|
+
workbook.save(@data_dir + "MyPdfFile.pdf", save_format.PDF)
|
36
|
+
|
37
|
+
puts "Pdf saved successfully."
|
38
|
+
end
|
39
|
+
|
40
|
+
def chart_to_image()
|
41
|
+
# Create a new Workbook.
|
42
|
+
workbook = Rjb::import('com.aspose.cells.Workbook').new
|
43
|
+
|
44
|
+
# Get the first worksheet.
|
45
|
+
sheet = workbook.getWorksheets().get(0)
|
46
|
+
|
47
|
+
# Set the name of worksheet
|
48
|
+
sheet.setName("Data")
|
49
|
+
|
50
|
+
# Get the cells collection in the sheet.
|
51
|
+
cells = workbook.getWorksheets().get(0).getCells()
|
52
|
+
|
53
|
+
# Put some values into a cells of the Data sheet.
|
54
|
+
cells.get("A1").setValue("Region")
|
55
|
+
cells.get("A2").setValue("France")
|
56
|
+
cells.get("A3").setValue("Germany")
|
57
|
+
cells.get("A4").setValue("England")
|
58
|
+
cells.get("A5").setValue("Sweden")
|
59
|
+
cells.get("A6").setValue("Italy")
|
60
|
+
cells.get("A7").setValue("Spain")
|
61
|
+
cells.get("A8").setValue("Portugal")
|
62
|
+
cells.get("B1").setValue("Sale")
|
63
|
+
cells.get("B2").setValue(70000)
|
64
|
+
cells.get("B3").setValue(55000)
|
65
|
+
cells.get("B4").setValue(30000)
|
66
|
+
cells.get("B5").setValue(40000)
|
67
|
+
cells.get("B6").setValue(35000)
|
68
|
+
cells.get("B7").setValue(32000)
|
69
|
+
cells.get("B8").setValue(10000)
|
70
|
+
|
71
|
+
# Create chart
|
72
|
+
chart_type = Rjb::import('com.aspose.cells.ChartType')
|
73
|
+
chart_index = sheet.getCharts().add(chart_type.COLUMN, 12, 1, 33, 12)
|
74
|
+
chart = sheet.getCharts().get(chart_index)
|
75
|
+
|
76
|
+
# Set properties of chart title
|
77
|
+
chart.getTitle().setText("Sales By Region")
|
78
|
+
chart.getTitle().getFont().setBold(true)
|
79
|
+
chart.getTitle().getFont().setSize(12)
|
80
|
+
|
81
|
+
# Set properties of nseries
|
82
|
+
chart.getNSeries().add("Data!B2:B8", true)
|
83
|
+
chart.getNSeries().setCategoryData("Data!A2:A8")
|
84
|
+
|
85
|
+
# Set the fill colors for the series's data points (France - Portugal(7 points))
|
86
|
+
chart_points = chart.getNSeries().get(0).getPoints()
|
87
|
+
|
88
|
+
color = Rjb::import('com.aspose.cells.Color')
|
89
|
+
|
90
|
+
point = chart_points.get(0)
|
91
|
+
point.getArea().setForegroundColor(color.getCyan())
|
92
|
+
|
93
|
+
point = chart_points.get(1)
|
94
|
+
point.getArea().setForegroundColor(color.getBlue())
|
95
|
+
|
96
|
+
point = chart_points.get(2)
|
97
|
+
point.getArea().setForegroundColor(color.getYellow())
|
98
|
+
|
99
|
+
point = chart_points.get(3)
|
100
|
+
point.getArea().setForegroundColor(color.getRed())
|
101
|
+
|
102
|
+
point = chart_points.get(4)
|
103
|
+
point.getArea().setForegroundColor(color.getBlack())
|
104
|
+
|
105
|
+
point = chart_points.get(5)
|
106
|
+
point.getArea().setForegroundColor(color.getGreen())
|
107
|
+
|
108
|
+
point = chart_points.get(6)
|
109
|
+
point.getArea().setForegroundColor(color.getMaroon())
|
110
|
+
|
111
|
+
# Set the legend invisible
|
112
|
+
chart.setShowLegend(false)
|
113
|
+
|
114
|
+
# Get the Chart image
|
115
|
+
img_opts = Rjb::import('com.aspose.cells.ImageOrPrintOptions').new
|
116
|
+
image_format = Rjb::import('com.aspose.cells.ImageFormat')
|
117
|
+
img_opts.setImageFormat(image_format.getPng())
|
118
|
+
|
119
|
+
# Save the chart image file.
|
120
|
+
chart.toImage(@data_dir + "MyChartImage.png", img_opts)
|
121
|
+
|
122
|
+
# Print message
|
123
|
+
puts "Convert chart to image successfully."
|
124
|
+
end
|
125
|
+
|
126
|
+
def worksheet_to_image(workbook)
|
127
|
+
#Create an object for ImageOptions
|
128
|
+
img_options = Rjb::import('com.aspose.cells.ImageOrPrintOptions').new
|
129
|
+
|
130
|
+
# Set the image type
|
131
|
+
image_format = Rjb::import('com.aspose.cells.ImageFormat')
|
132
|
+
img_options.setImageFormat(image_format.getPng())
|
133
|
+
|
134
|
+
# Get the first worksheet.
|
135
|
+
sheet = workbook.getWorksheets().get(0)
|
136
|
+
|
137
|
+
# Create a SheetRender object for the target sheet
|
138
|
+
sr = Rjb::import('com.aspose.cells.SheetRender').new(sheet, img_options)
|
139
|
+
|
140
|
+
j = 0
|
141
|
+
while j < sr.getPageCount()
|
142
|
+
# Generate an image for the worksheet
|
143
|
+
sr.toImage(j, @data_dir + "mysheetimg_#{j}.png")
|
144
|
+
j +=1
|
145
|
+
end
|
146
|
+
|
147
|
+
puts "Image saved successfully."
|
148
|
+
end
|
149
|
+
|
150
|
+
def worksheet_to_svg(workbook)
|
151
|
+
# Convert each worksheet into svg format in a single page.
|
152
|
+
img_options = Rjb::import('com.aspose.cells.ImageOrPrintOptions').new
|
153
|
+
save_format = Rjb::import('com.aspose.cells.SaveFormat')
|
154
|
+
img_options.setSaveFormat(save_format.SVG)
|
155
|
+
img_options.setOnePagePerSheet(true)
|
156
|
+
|
157
|
+
# Convert each worksheet into svg format
|
158
|
+
sheet_count = workbook.getWorksheets().getCount()
|
159
|
+
|
160
|
+
i=0
|
161
|
+
while i < sheet_count
|
162
|
+
sheet = workbook.getWorksheets().get(i)
|
163
|
+
|
164
|
+
sr = Rjb::import('com.aspose.cells.SheetRender').new(sheet, img_options)
|
165
|
+
|
166
|
+
k=0
|
167
|
+
while sr.getPageCount()
|
168
|
+
# Output the worksheet into Svg image format
|
169
|
+
sr.toImage(k, @data_dir + sheet.getName() + "#{k}.svg")
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
puts "SVG saved successfully."
|
174
|
+
end
|
175
|
+
|
176
|
+
def worksheet_to_mhtml(workbook)
|
177
|
+
save_format = Rjb::import('com.aspose.cells.SaveFormat')
|
178
|
+
# Specify the HTML saving options
|
179
|
+
sv = Rjb::import('com.aspose.cells.HtmlSaveOptions').new(save_format.M_HTML)
|
180
|
+
|
181
|
+
# Save the document
|
182
|
+
workbook.save(@data_dir + "convert.mht", sv)
|
183
|
+
|
184
|
+
puts "MHTML saved successfully."
|
185
|
+
end
|
186
|
+
|
187
|
+
def worksheet_to_html(workbook)
|
188
|
+
save_format = Rjb::import('com.aspose.cells.SaveFormat')
|
189
|
+
# Specify the HTML saving options
|
190
|
+
save = Rjb::import('com.aspose.cells.HtmlSaveOptions').new(save_format.M_HTML)
|
191
|
+
|
192
|
+
# Save the document
|
193
|
+
workbook.save(@data_dir + "output.html", save)
|
194
|
+
|
195
|
+
puts "HTML saved successfully."
|
196
|
+
end
|
197
|
+
|
198
|
+
def html_to_excel()
|
199
|
+
load_format = Rjb::import('com.aspose.cells.LoadFormat')
|
200
|
+
# Create an instance of HTMLLoadOptions and initiate it with appropriate LoadFormat
|
201
|
+
options = Rjb::import('com.aspose.cells.HTMLLoadOptions').new(load_format.HTML)
|
202
|
+
|
203
|
+
# Load the Html file through file path while passing the instance of HTMLLoadOptions class
|
204
|
+
workbook = Rjb::import('com.aspose.cells.Workbook').new(@data_dir + "index.html", options)
|
205
|
+
|
206
|
+
save_format = Rjb::import('com.aspose.cells.SaveFormat')
|
207
|
+
#Save the results to disc in Xlsx format
|
208
|
+
workbook.save(@data_dir + "output.xlsx", save_format.XLSX)
|
209
|
+
|
210
|
+
puts "XLSX saved successfully."
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|