summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.rubocop.yml6
-rw-r--r--.rubocop_todo.yml93
-rw-r--r--CHANGELOG.md1
-rw-r--r--axlsx.gemspec12
-rw-r--r--lib/axlsx.rb8
-rw-r--r--lib/axlsx/content_type/content_type.rb6
-rw-r--r--lib/axlsx/drawing/drawing.rb98
-rw-r--r--lib/axlsx/package.rb6
-rw-r--r--lib/axlsx/rels/relationships.rb2
-rw-r--r--lib/axlsx/stylesheet/styles.rb34
-rw-r--r--lib/axlsx/util/constants.rb4
-rw-r--r--lib/axlsx/util/simple_typed_list.rb12
-rw-r--r--lib/axlsx/workbook/workbook.rb98
-rw-r--r--lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb4
-rw-r--r--lib/axlsx/workbook/worksheet/merged_cells.rb4
-rw-r--r--lib/axlsx/workbook/worksheet/page_margins.rb9
-rw-r--r--lib/caxlsx.rb2
-rwxr-xr-xtest/benchmark.rb17
18 files changed, 240 insertions, 176 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 22e574bc..a825d0cb 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -16,6 +16,9 @@ AllCops:
- 'examples/**/*'
- 'vendor/bundle/**/*'
+Gemspec:
+ Enabled: true
+
Layout:
Enabled: true
@@ -31,6 +34,9 @@ Lint:
Minitest:
Enabled: true
+Naming:
+ Enabled: true
+
Performance:
Enabled: true
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 82fc6a22..e15978df 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -7,6 +7,13 @@
# versions of RuboCop, may require this file to be generated again.
# This cop supports safe autocorrection (--autocorrect).
+# Configuration parameters: Severity, Include.
+# Include: **/*.gemspec
+Gemspec/RequireMFA:
+ Exclude:
+ - 'axlsx.gemspec'
+
+# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_braces
Layout/FirstHashElementIndentation:
@@ -53,11 +60,6 @@ Lint/DisjunctiveAssignmentInConstructor:
Exclude:
- 'lib/axlsx/drawing/num_data_source.rb'
-# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches.
-Lint/DuplicateBranch:
- Exclude:
- - 'lib/axlsx/workbook/worksheet/merged_cells.rb'
-
Lint/NonLocalExitFromIterator:
Exclude:
- 'lib/axlsx/util/validators.rb'
@@ -77,11 +79,67 @@ Lint/UnusedMethodArgument:
- 'lib/axlsx/package.rb'
- 'lib/axlsx/util/validators.rb'
-# Configuration parameters: MinSize.
-Performance/CollectionLiteralInLoop:
+Naming/AccessorMethodName:
Exclude:
- - 'lib/axlsx/package.rb'
- - 'lib/axlsx/workbook/worksheet/page_margins.rb'
+ - 'lib/axlsx/drawing/axes.rb'
+ - 'lib/axlsx/workbook/worksheet/data_validation.rb'
+
+# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
+# CheckDefinitionPathHierarchyRoots: lib, spec, test, src
+# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
+Naming/FileName:
+ Exclude:
+ - 'lib/axlsx/drawing/bar_3D_chart.rb'
+ - 'lib/axlsx/drawing/line_3D_chart.rb'
+ - 'lib/axlsx/drawing/pie_3D_chart.rb'
+ - 'lib/axlsx/drawing/view_3D.rb'
+ - 'test/drawing/tc_bar_3D_chart.rb'
+ - 'test/drawing/tc_pie_3D_chart.rb'
+ - 'test/drawing/tc_view_3D.rb'
+
+# Configuration parameters: EnforcedStyle, AllowedPatterns.
+# SupportedStyles: snake_case, camelCase
+Naming/MethodName:
+ Enabled: false
+
+# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
+# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
+Naming/MethodParameterName:
+ Enabled: false
+
+# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
+# NamePrefix: is_, has_, have_
+# ForbiddenPrefixes: is_, has_, have_
+# AllowedMethods: is_a?
+# MethodDefinitionMacros: define_method, define_singleton_method
+Naming/PredicateName:
+ Exclude:
+ - 'spec/**/*'
+ - 'lib/axlsx/workbook/worksheet/cell.rb'
+ - 'lib/axlsx/workbook/worksheet/worksheet_comments.rb'
+ - 'lib/axlsx/workbook/worksheet/worksheet_drawing.rb'
+
+# Configuration parameters: EnforcedStyle, AllowedIdentifiers, AllowedPatterns.
+# SupportedStyles: snake_case, camelCase
+Naming/VariableName:
+ Enabled: false
+
+# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
+# SupportedStyles: snake_case, normalcase, non_integer
+# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
+Naming/VariableNumber:
+ Exclude:
+ - 'lib/axlsx/util/validators.rb'
+ - 'lib/axlsx/workbook/worksheet/cell.rb'
+ - 'lib/axlsx/workbook/worksheet/cell_serializer.rb'
+ - 'lib/axlsx/workbook/worksheet/sheet_protection.rb'
+ - 'test/rels/tc_relationship.rb'
+ - 'test/rels/tc_relationships.rb'
+ - 'test/tc_package.rb'
+ - 'test/workbook/worksheet/tc_cell.rb'
+ - 'test/workbook/worksheet/tc_date_time_converter.rb'
+ - 'test/workbook/worksheet/tc_sheet_view.rb'
+ - 'test/workbook/worksheet/tc_worksheet.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
@@ -96,12 +154,6 @@ Style/AccessorGrouping:
Style/Alias:
Enabled: false
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: MinBranchesCount.
-Style/CaseLikeIf:
- Exclude:
- - 'lib/axlsx/workbook/worksheet/merged_cells.rb'
-
Style/ClassVars:
Exclude:
- 'lib/axlsx.rb'
@@ -349,17 +401,6 @@ Style/RandomWithOffset:
Exclude:
- 'lib/axlsx/drawing/vml_shape.rb'
-# This cop supports safe autocorrection (--autocorrect).
-Style/RedundantFileExtensionInRequire:
- Exclude:
- - 'lib/axlsx/content_type/content_type.rb'
- - 'lib/axlsx/drawing/drawing.rb'
- - 'lib/axlsx/rels/relationships.rb'
- - 'lib/axlsx/stylesheet/styles.rb'
- - 'lib/axlsx/workbook/workbook.rb'
- - 'lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
- - 'lib/caxlsx.rb'
-
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/RedundantInterpolation:
Exclude:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf7a02ba..c7e0fc8b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@ CHANGELOG
- Fix `SimpleTypedList#to_a` and `SimpleTypedList#to_ary` returning the internal list instance
- Remove ability to set `u=` to true in favor of using :single or one of the other underline options
- Fix `Workbook#sheet_by_name` not returning sheets with encoded characters in the name
+ - Raise exception if `axlsx_styler` gem is present as its code was merged directly into `caxlsx` in v3.3.0
- **April.23.23**: 3.4.1
- [PR #209](https://github.com/caxlsx/caxlsx/pull/209) - Revert characters other than `=` being considered as formulas.
diff --git a/axlsx.gemspec b/axlsx.gemspec
index 34942176..bf9c0942 100644
--- a/axlsx.gemspec
+++ b/axlsx.gemspec
@@ -11,19 +11,19 @@ Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.summary = "Excel OOXML (xlsx) with charts, styles, images and autowidth columns."
s.license = 'MIT'
- s.description = <<-eof
- xlsx spreadsheet generation with charts, images, automated column width, customizable styles and full schema validation. Axlsx helps you create beautiful Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice) without having to understand the entire ECMA specification. Check out the README for some examples of how easy it is. Best of all, you can validate your xlsx file before serialization so you know for sure that anything generated is going to load on your client's machine.
- eof
+ s.description = <<~MSG
+ xlsx spreadsheet generation with charts, images, automated column width, customizable styles and full schema validation. Axlsx helps you create beautiful Office Open XML Spreadsheet documents (Excel, Google Spreadsheets, Numbers, LibreOffice) without having to understand the entire ECMA specification. Check out the README for some examples of how easy it is. Best of all, you can validate your xlsx file before serialization so you know for sure that anything generated is going to load on your client's machine.
+ MSG
s.files = Dir.glob("{lib/**/*,examples/**/*.rb,examples/**/*.jpeg}") + %w{LICENSE README.md Rakefile CHANGELOG.md .yardopts .yardopts_guide}
- s.add_runtime_dependency 'nokogiri', '~> 1.10', '>= 1.10.4'
- s.add_runtime_dependency 'rubyzip', '>= 1.3.0', '< 3'
s.add_runtime_dependency "htmlentities", "~> 4.3", '>= 4.3.4'
s.add_runtime_dependency "marcel", '~> 1.0'
+ s.add_runtime_dependency 'nokogiri', '~> 1.10', '>= 1.10.4'
+ s.add_runtime_dependency 'rubyzip', '>= 1.3.0', '< 3'
- s.add_development_dependency 'yard', "~> 0.9.8"
s.add_development_dependency 'kramdown', '~> 2.3'
s.add_development_dependency 'timecop', "~> 0.9.0"
+ s.add_development_dependency 'yard', "~> 0.9.8"
s.required_ruby_version = '>= 2.6'
s.require_path = 'lib'
end
diff --git a/lib/axlsx.rb b/lib/axlsx.rb
index 58096e7c..20af45e0 100644
--- a/lib/axlsx.rb
+++ b/lib/axlsx.rb
@@ -33,12 +33,8 @@ require 'bigdecimal'
require 'set'
require 'time'
-begin
- if Gem.loaded_specs.has_key?("axlsx_styler")
- raise StandardError, "Please remove `axlsx_styler` from your Gemfile, the associated functionality is now built-in to `caxlsx` directly."
- end
-rescue StandardError
- # Do nothing
+if Gem.loaded_specs.has_key?("axlsx_styler")
+ raise StandardError, "Please remove `axlsx_styler` from your Gemfile, the associated functionality is now built-in to `caxlsx` directly."
end
# xlsx generation with charts, images, automated column width, customizable styles
diff --git a/lib/axlsx/content_type/content_type.rb b/lib/axlsx/content_type/content_type.rb
index 22763bfb..d2e3bb9e 100644
--- a/lib/axlsx/content_type/content_type.rb
+++ b/lib/axlsx/content_type/content_type.rb
@@ -1,9 +1,9 @@
# frozen_string_literal: true
module Axlsx
- require 'axlsx/content_type/abstract_content_type.rb'
- require 'axlsx/content_type/default.rb'
- require 'axlsx/content_type/override.rb'
+ require 'axlsx/content_type/abstract_content_type'
+ require 'axlsx/content_type/default'
+ require 'axlsx/content_type/override'
# ContentTypes used in the package. This is automatically managed by the package package.
class ContentType < SimpleTypedList
diff --git a/lib/axlsx/drawing/drawing.rb b/lib/axlsx/drawing/drawing.rb
index ef532974..8cb3e2cc 100644
--- a/lib/axlsx/drawing/drawing.rb
+++ b/lib/axlsx/drawing/drawing.rb
@@ -1,55 +1,55 @@
# frozen_string_literal: true
module Axlsx
- require 'axlsx/drawing/d_lbls.rb'
- require 'axlsx/drawing/title.rb'
- require 'axlsx/drawing/series_title.rb'
- require 'axlsx/drawing/series.rb'
- require 'axlsx/drawing/pie_series.rb'
- require 'axlsx/drawing/bar_series.rb'
- require 'axlsx/drawing/line_series.rb'
- require 'axlsx/drawing/scatter_series.rb'
- require 'axlsx/drawing/bubble_series.rb'
- require 'axlsx/drawing/area_series.rb'
-
- require 'axlsx/drawing/scaling.rb'
- require 'axlsx/drawing/axis.rb'
-
- require 'axlsx/drawing/str_val.rb'
- require 'axlsx/drawing/num_val.rb'
- require 'axlsx/drawing/str_data.rb'
- require 'axlsx/drawing/num_data.rb'
- require 'axlsx/drawing/num_data_source.rb'
- require 'axlsx/drawing/ax_data_source.rb'
-
- require 'axlsx/drawing/ser_axis.rb'
- require 'axlsx/drawing/cat_axis.rb'
- require 'axlsx/drawing/val_axis.rb'
- require 'axlsx/drawing/axes.rb'
-
- require 'axlsx/drawing/marker.rb'
-
- require 'axlsx/drawing/one_cell_anchor.rb'
- require 'axlsx/drawing/two_cell_anchor.rb'
- require 'axlsx/drawing/graphic_frame.rb'
-
- require 'axlsx/drawing/view_3D.rb'
- require 'axlsx/drawing/chart.rb'
- require 'axlsx/drawing/pie_3D_chart.rb'
- require 'axlsx/drawing/bar_3D_chart.rb'
- require 'axlsx/drawing/bar_chart.rb'
- require 'axlsx/drawing/line_chart.rb'
- require 'axlsx/drawing/line_3D_chart.rb'
- require 'axlsx/drawing/scatter_chart.rb'
- require 'axlsx/drawing/bubble_chart.rb'
- require 'axlsx/drawing/area_chart.rb'
-
- require 'axlsx/drawing/picture_locking.rb'
- require 'axlsx/drawing/pic.rb'
- require 'axlsx/drawing/hyperlink.rb'
-
- require 'axlsx/drawing/vml_drawing.rb'
- require 'axlsx/drawing/vml_shape.rb'
+ require 'axlsx/drawing/d_lbls'
+ require 'axlsx/drawing/title'
+ require 'axlsx/drawing/series_title'
+ require 'axlsx/drawing/series'
+ require 'axlsx/drawing/pie_series'
+ require 'axlsx/drawing/bar_series'
+ require 'axlsx/drawing/line_series'
+ require 'axlsx/drawing/scatter_series'
+ require 'axlsx/drawing/bubble_series'
+ require 'axlsx/drawing/area_series'
+
+ require 'axlsx/drawing/scaling'
+ require 'axlsx/drawing/axis'
+
+ require 'axlsx/drawing/str_val'
+ require 'axlsx/drawing/num_val'
+ require 'axlsx/drawing/str_data'
+ require 'axlsx/drawing/num_data'
+ require 'axlsx/drawing/num_data_source'
+ require 'axlsx/drawing/ax_data_source'
+
+ require 'axlsx/drawing/ser_axis'
+ require 'axlsx/drawing/cat_axis'
+ require 'axlsx/drawing/val_axis'
+ require 'axlsx/drawing/axes'
+
+ require 'axlsx/drawing/marker'
+
+ require 'axlsx/drawing/one_cell_anchor'
+ require 'axlsx/drawing/two_cell_anchor'
+ require 'axlsx/drawing/graphic_frame'
+
+ require 'axlsx/drawing/view_3D'
+ require 'axlsx/drawing/chart'
+ require 'axlsx/drawing/pie_3D_chart'
+ require 'axlsx/drawing/bar_3D_chart'
+ require 'axlsx/drawing/bar_chart'
+ require 'axlsx/drawing/line_chart'
+ require 'axlsx/drawing/line_3D_chart'
+ require 'axlsx/drawing/scatter_chart'
+ require 'axlsx/drawing/bubble_chart'
+ require 'axlsx/drawing/area_chart'
+
+ require 'axlsx/drawing/picture_locking'
+ require 'axlsx/drawing/pic'
+ require 'axlsx/drawing/hyperlink'
+
+ require 'axlsx/drawing/vml_drawing'
+ require 'axlsx/drawing/vml_shape'
# A Drawing is a canvas for charts and images. Each worksheet has a single drawing that manages anchors.
# The anchors reference the charts or images via graphical frames. This is not a trivial relationship so please do follow the advice in the note.
diff --git a/lib/axlsx/package.rb b/lib/axlsx/package.rb
index 2983ed72..20195ddc 100644
--- a/lib/axlsx/package.rb
+++ b/lib/axlsx/package.rb
@@ -330,11 +330,11 @@ module Axlsx
end
exts = workbook.images.map { |image| image.extname.downcase }
exts.uniq.each do |ext|
- ct = if ['jpeg', 'jpg'].include?(ext)
+ ct = if JPEG_EXS.include?(ext)
JPEG_CT
- elsif ext == 'gif'
+ elsif ext == GIF_EX
GIF_CT
- elsif ext == 'png'
+ elsif ext == PNG_EX
PNG_CT
end
c_types << Axlsx::Default.new(:ContentType => ct, :Extension => ext)
diff --git a/lib/axlsx/rels/relationships.rb b/lib/axlsx/rels/relationships.rb
index 3aa9c1bf..910f2473 100644
--- a/lib/axlsx/rels/relationships.rb
+++ b/lib/axlsx/rels/relationships.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module Axlsx
- require 'axlsx/rels/relationship.rb'
+ require 'axlsx/rels/relationship'
# Relationships are a collection of Relations that define how package parts are related.
# @note The package automatically manages releationships.
diff --git a/lib/axlsx/stylesheet/styles.rb b/lib/axlsx/stylesheet/styles.rb
index 625f6a02..e74478af 100644
--- a/lib/axlsx/stylesheet/styles.rb
+++ b/lib/axlsx/stylesheet/styles.rb
@@ -1,23 +1,23 @@
# frozen_string_literal: true
module Axlsx
- require 'axlsx/stylesheet/border.rb'
- require 'axlsx/stylesheet/border_pr.rb'
- require 'axlsx/stylesheet/cell_alignment.rb'
- require 'axlsx/stylesheet/cell_style.rb'
- require 'axlsx/stylesheet/color.rb'
- require 'axlsx/stylesheet/fill.rb'
- require 'axlsx/stylesheet/font.rb'
- require 'axlsx/stylesheet/gradient_fill.rb'
- require 'axlsx/stylesheet/gradient_stop.rb'
- require 'axlsx/stylesheet/num_fmt.rb'
- require 'axlsx/stylesheet/pattern_fill.rb'
- require 'axlsx/stylesheet/table_style.rb'
- require 'axlsx/stylesheet/table_styles.rb'
- require 'axlsx/stylesheet/table_style_element.rb'
- require 'axlsx/stylesheet/dxf.rb'
- require 'axlsx/stylesheet/xf.rb'
- require 'axlsx/stylesheet/cell_protection.rb'
+ require 'axlsx/stylesheet/border'
+ require 'axlsx/stylesheet/border_pr'
+ require 'axlsx/stylesheet/cell_alignment'
+ require 'axlsx/stylesheet/cell_style'
+ require 'axlsx/stylesheet/color'
+ require 'axlsx/stylesheet/fill'
+ require 'axlsx/stylesheet/font'
+ require 'axlsx/stylesheet/gradient_fill'
+ require 'axlsx/stylesheet/gradient_stop'
+ require 'axlsx/stylesheet/num_fmt'
+ require 'axlsx/stylesheet/pattern_fill'
+ require 'axlsx/stylesheet/table_style'
+ require 'axlsx/stylesheet/table_styles'
+ require 'axlsx/stylesheet/table_style_element'
+ require 'axlsx/stylesheet/dxf'
+ require 'axlsx/stylesheet/xf'
+ require 'axlsx/stylesheet/cell_protection'
# The Styles class manages worksheet styles
# In addition to creating the require style objects for a valid xlsx package, this class provides the key mechanism for adding styles to your workbook, and safely applying them to the cells of your worksheet.
diff --git a/lib/axlsx/util/constants.rb b/lib/axlsx/util/constants.rb
index 138c8bf0..459e0099 100644
--- a/lib/axlsx/util/constants.rb
+++ b/lib/axlsx/util/constants.rb
@@ -166,8 +166,8 @@ module Axlsx
# xml content type extensions
XML_EX = "xml"
- # jpeg extension
- JPEG_EX = "jpeg"
+ # jpeg extensions
+ JPEG_EXS = ["jpeg", "jpg"].freeze
# gif extension
GIF_EX = "gif"
diff --git a/lib/axlsx/util/simple_typed_list.rb b/lib/axlsx/util/simple_typed_list.rb
index c3910fca..30cfd2a5 100644
--- a/lib/axlsx/util/simple_typed_list.rb
+++ b/lib/axlsx/util/simple_typed_list.rb
@@ -15,6 +15,12 @@ module Axlsx
undef_method name
end
+ # We often call index(element) on instances of SimpleTypedList. Thus, we do not want to inherit Array
+ # implementation of == / eql? which walks the elements calling == / eql?. Instead we want the fast
+ # and original versions from BasicObject.
+ alias :== :equal?
+ alias :eql? :equal?
+
# Creats a new typed list
# @param [Array, Class] type An array of Class objects or a single Class object
# @param [String] serialize_as The tag name to use in serialization
@@ -85,12 +91,12 @@ module Axlsx
end
# join operator
- # @param [Array] v the array to join
+ # @param [Array] other the array to join
# @raise [ArgumentError] if any of the values being joined are not
# one of the allowed types
# @return [SimpleTypedList]
- def +(v)
- v.each do |item|
+ def +(other)
+ other.each do |item|
self << item
end
super
diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb
index 95d3e4a7..ec80d6dc 100644
--- a/lib/axlsx/workbook/workbook.rb
+++ b/lib/axlsx/workbook/workbook.rb
@@ -1,41 +1,41 @@
# frozen_string_literal: true
module Axlsx
- require 'axlsx/workbook/worksheet/sheet_calc_pr.rb'
- require 'axlsx/workbook/worksheet/auto_filter/auto_filter.rb'
- require 'axlsx/workbook/worksheet/date_time_converter.rb'
- require 'axlsx/workbook/worksheet/protected_range.rb'
- require 'axlsx/workbook/worksheet/protected_ranges.rb'
+ require 'axlsx/workbook/worksheet/sheet_calc_pr'
+ require 'axlsx/workbook/worksheet/auto_filter/auto_filter'
+ require 'axlsx/workbook/worksheet/date_time_converter'
+ require 'axlsx/workbook/worksheet/protected_range'
+ require 'axlsx/workbook/worksheet/protected_ranges'
require 'axlsx/workbook/worksheet/rich_text_run'
require 'axlsx/workbook/worksheet/rich_text'
- require 'axlsx/workbook/worksheet/cell_serializer.rb'
- require 'axlsx/workbook/worksheet/cell.rb'
- require 'axlsx/workbook/worksheet/page_margins.rb'
- require 'axlsx/workbook/worksheet/page_set_up_pr.rb'
- require 'axlsx/workbook/worksheet/outline_pr.rb'
- require 'axlsx/workbook/worksheet/page_setup.rb'
- require 'axlsx/workbook/worksheet/header_footer.rb'
- require 'axlsx/workbook/worksheet/print_options.rb'
- require 'axlsx/workbook/worksheet/cfvo.rb'
- require 'axlsx/workbook/worksheet/cfvos.rb'
- require 'axlsx/workbook/worksheet/color_scale.rb'
- require 'axlsx/workbook/worksheet/data_bar.rb'
- require 'axlsx/workbook/worksheet/icon_set.rb'
- require 'axlsx/workbook/worksheet/conditional_formatting.rb'
- require 'axlsx/workbook/worksheet/conditional_formatting_rule.rb'
- require 'axlsx/workbook/worksheet/conditional_formattings.rb'
- require 'axlsx/workbook/worksheet/row.rb'
- require 'axlsx/workbook/worksheet/col.rb'
- require 'axlsx/workbook/worksheet/cols.rb'
- require 'axlsx/workbook/worksheet/comments.rb'
- require 'axlsx/workbook/worksheet/comment.rb'
- require 'axlsx/workbook/worksheet/merged_cells.rb'
- require 'axlsx/workbook/worksheet/sheet_protection.rb'
- require 'axlsx/workbook/worksheet/sheet_pr.rb'
- require 'axlsx/workbook/worksheet/dimension.rb'
- require 'axlsx/workbook/worksheet/sheet_data.rb'
- require 'axlsx/workbook/worksheet/worksheet_drawing.rb'
- require 'axlsx/workbook/worksheet/worksheet_comments.rb'
+ require 'axlsx/workbook/worksheet/cell_serializer'
+ require 'axlsx/workbook/worksheet/cell'
+ require 'axlsx/workbook/worksheet/page_margins'
+ require 'axlsx/workbook/worksheet/page_set_up_pr'
+ require 'axlsx/workbook/worksheet/outline_pr'
+ require 'axlsx/workbook/worksheet/page_setup'
+ require 'axlsx/workbook/worksheet/header_footer'
+ require 'axlsx/workbook/worksheet/print_options'
+ require 'axlsx/workbook/worksheet/cfvo'
+ require 'axlsx/workbook/worksheet/cfvos'
+ require 'axlsx/workbook/worksheet/color_scale'
+ require 'axlsx/workbook/worksheet/data_bar'
+ require 'axlsx/workbook/worksheet/icon_set'
+ require 'axlsx/workbook/worksheet/conditional_formatting'
+ require 'axlsx/workbook/worksheet/conditional_formatting_rule'
+ require 'axlsx/workbook/worksheet/conditional_formattings'
+ require 'axlsx/workbook/worksheet/row'
+ require 'axlsx/workbook/worksheet/col'
+ require 'axlsx/workbook/worksheet/cols'
+ require 'axlsx/workbook/worksheet/comments'
+ require 'axlsx/workbook/worksheet/comment'
+ require 'axlsx/workbook/worksheet/merged_cells'
+ require 'axlsx/workbook/worksheet/sheet_protection'
+ require 'axlsx/workbook/worksheet/sheet_pr'
+ require 'axlsx/workbook/worksheet/dimension'
+ require 'axlsx/workbook/worksheet/sheet_data'
+ require 'axlsx/workbook/worksheet/worksheet_drawing'
+ require 'axlsx/workbook/worksheet/worksheet_comments'
require 'axlsx/workbook/worksheet/worksheet_hyperlink'
require 'axlsx/workbook/worksheet/worksheet_hyperlinks'
require 'axlsx/workbook/worksheet/break'
@@ -43,22 +43,22 @@ module Axlsx
require 'axlsx/workbook/worksheet/col_breaks'
require 'axlsx/workbook/workbook_view'
require 'axlsx/workbook/workbook_views'
- require 'axlsx/workbook/worksheet/worksheet.rb'
- require 'axlsx/workbook/shared_strings_table.rb'
- require 'axlsx/workbook/defined_name.rb'
- require 'axlsx/workbook/defined_names.rb'
- require 'axlsx/workbook/worksheet/table_style_info.rb'
- require 'axlsx/workbook/worksheet/table.rb'
- require 'axlsx/workbook/worksheet/tables.rb'
- require 'axlsx/workbook/worksheet/pivot_table_cache_definition.rb'
- require 'axlsx/workbook/worksheet/pivot_table.rb'
- require 'axlsx/workbook/worksheet/pivot_tables.rb'
- require 'axlsx/workbook/worksheet/data_validation.rb'
- require 'axlsx/workbook/worksheet/data_validations.rb'
- require 'axlsx/workbook/worksheet/sheet_view.rb'
- require 'axlsx/workbook/worksheet/sheet_format_pr.rb'
- require 'axlsx/workbook/worksheet/pane.rb'
- require 'axlsx/workbook/worksheet/selection.rb'
+ require 'axlsx/workbook/worksheet/worksheet'
+ require 'axlsx/workbook/shared_strings_table'
+ require 'axlsx/workbook/defined_name'
+ require 'axlsx/workbook/defined_names'
+ require 'axlsx/workbook/worksheet/table_style_info'
+ require 'axlsx/workbook/worksheet/table'
+ require 'axlsx/workbook/worksheet/tables'
+ require 'axlsx/workbook/worksheet/pivot_table_cache_definition'
+ require 'axlsx/workbook/worksheet/pivot_table'
+ require 'axlsx/workbook/worksheet/pivot_tables'
+ require 'axlsx/workbook/worksheet/data_validation'
+ require 'axlsx/workbook/worksheet/data_validations'
+ require 'axlsx/workbook/worksheet/sheet_view'
+ require 'axlsx/workbook/worksheet/sheet_format_pr'
+ require 'axlsx/workbook/worksheet/pane'
+ require 'axlsx/workbook/worksheet/selection'
# The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
# The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
diff --git a/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb b/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
index 5a74d79a..f25966de 100644
--- a/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
+++ b/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
-require 'axlsx/workbook/worksheet/auto_filter/filter_column.rb'
-require 'axlsx/workbook/worksheet/auto_filter/filters.rb'
+require 'axlsx/workbook/worksheet/auto_filter/filter_column'
+require 'axlsx/workbook/worksheet/auto_filter/filters'
module Axlsx
# This class represents an auto filter range in a worksheet
diff --git a/lib/axlsx/workbook/worksheet/merged_cells.rb b/lib/axlsx/workbook/worksheet/merged_cells.rb
index c0ca1ebe..c3fb6dde 100644
--- a/lib/axlsx/workbook/worksheet/merged_cells.rb
+++ b/lib/axlsx/workbook/worksheet/merged_cells.rb
@@ -12,7 +12,7 @@ module Axlsx
end
# adds cells to the merged cells collection
- # @param [Array||String] cells The cells to add to the merged cells
+ # @param [Array|String] cells The cells to add to the merged cells
# collection. This can be an array of actual cells or a string style
# range like 'A1:C1'
def add(cells)
@@ -20,8 +20,6 @@ module Axlsx
cells
elsif cells.is_a?(Array)
Axlsx::cell_range(cells, false)
- elsif cells.is_a?(Row)
- Axlsx::cell_range(cells, false)
end
end
diff --git a/lib/axlsx/workbook/worksheet/page_margins.rb b/lib/axlsx/workbook/worksheet/page_margins.rb
index 4d133c5a..9c2ddd8e 100644
--- a/lib/axlsx/workbook/worksheet/page_margins.rb
+++ b/lib/axlsx/workbook/worksheet/page_margins.rb
@@ -29,7 +29,10 @@ module Axlsx
parse_options options
end
- serializable_attributes :left, :right, :bottom, :top, :header, :footer
+ # Possible margins to set
+ MARGIN_KEYS = [:left, :right, :top, :bottom, :header, :footer].freeze
+
+ serializable_attributes(*MARGIN_KEYS)
# Default left and right margin (in inches)
DEFAULT_LEFT_RIGHT = 0.75
@@ -65,10 +68,10 @@ module Axlsx
attr_reader :footer
# Set some or all margins at once.
- # @param [Hash] margins the margins to set (possible keys are :left, :right, :top, :bottom, :header and :footer).
+ # @param [Hash] margins the margins to set. See {MARGIN_KEYS} for a list of possible keys.
def set(margins)
margins.select do |k, v|
- next unless [:left, :right, :top, :bottom, :header, :footer].include? k
+ next unless MARGIN_KEYS.include? k
send("#{k}=", v)
end
diff --git a/lib/caxlsx.rb b/lib/caxlsx.rb
index e97cd68c..d2b96503 100644
--- a/lib/caxlsx.rb
+++ b/lib/caxlsx.rb
@@ -1,3 +1,3 @@
# frozen_string_literal: true
-require 'axlsx.rb'
+require 'axlsx'
diff --git a/test/benchmark.rb b/test/benchmark.rb
index d5ccdf64..fb4d7050 100755
--- a/test/benchmark.rb
+++ b/test/benchmark.rb
@@ -11,9 +11,22 @@ input1 = (32..126).to_a.pack('U*').chars.to_a # these will need to be escaped
input2 = (65..122).to_a.pack('U*').chars.to_a # these do not need to be escaped
10.times { row << input1.shuffle.join }
10.times { row << input2.shuffle.join }
-times = 3000
+times = 3_000
Benchmark.bmbm(30) do |x|
+ x.report('axlsx_merged_cells') do
+ p = Axlsx::Package.new
+ p.workbook do |wb|
+ wb.add_worksheet do |sheet|
+ times.times do
+ sheet << row
+ sheet.merge_cells(sheet.rows.last.cells)
+ end
+ end
+ end
+ p.serialize("example_axlsx_merged_cells.xlsx")
+ end
+
x.report('axlsx_noautowidth') do
p = Axlsx::Package.new
p.workbook do |wb|
@@ -85,4 +98,4 @@ Benchmark.bmbm(30) do |x|
end
end
end
-File.delete("example.csv", "example_streamed.xlsx", "example_shared.xlsx", "example_autowidth.xlsx", "example_noautowidth.xlsx", "example_zip_command.xlsx")
+File.delete("example_axlsx_merged_cells.xlsx", "example.csv", "example_streamed.xlsx", "example_shared.xlsx", "example_autowidth.xlsx", "example_noautowidth.xlsx", "example_zip_command.xlsx")