rubyXL 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/rubyXL.rb +1 -0
- data/lib/rubyXL/objects/border.rb +3 -4
- data/lib/rubyXL/objects/calculation_chain.rb +1 -1
- data/lib/rubyXL/objects/cell_style.rb +3 -4
- data/lib/rubyXL/objects/chartsheet.rb +78 -0
- data/lib/rubyXL/objects/container_nodes.rb +2 -3
- data/lib/rubyXL/objects/data_validation.rb +5 -10
- data/lib/rubyXL/objects/document_properties.rb +1 -1
- data/lib/rubyXL/objects/fill.rb +3 -6
- data/lib/rubyXL/objects/filters.rb +120 -0
- data/lib/rubyXL/objects/formula.rb +2 -2
- data/lib/rubyXL/objects/ooxml_object.rb +116 -56
- data/lib/rubyXL/objects/relationships.rb +5 -1
- data/lib/rubyXL/objects/shared_strings.rb +1 -1
- data/lib/rubyXL/objects/sheet_common.rb +50 -0
- data/lib/rubyXL/objects/sheet_data.rb +6 -1
- data/lib/rubyXL/objects/simple_types.rb +78 -0
- data/lib/rubyXL/objects/stylesheet.rb +15 -3
- data/lib/rubyXL/objects/text.rb +4 -5
- data/lib/rubyXL/objects/workbook.rb +151 -26
- data/lib/rubyXL/objects/worksheet.rb +329 -107
- data/lib/rubyXL/parser.rb +12 -11
- data/lib/rubyXL/workbook.rb +3 -2
- data/rdoc/README_rdoc.html +404 -0
- data/rdoc/RubyXL.html +337 -0
- data/rdoc/RubyXL/AExtensionStorageArea.html +105 -0
- data/rdoc/RubyXL/Alignment.html +108 -0
- data/rdoc/RubyXL/AlternateContent.html +105 -0
- data/rdoc/RubyXL/AutoFilter.html +105 -0
- data/rdoc/RubyXL/AutoFilterColumn.html +105 -0
- data/rdoc/RubyXL/BooleanNode.html +105 -0
- data/rdoc/RubyXL/BooleanValue.html +105 -0
- data/rdoc/RubyXL/Border.html +105 -0
- data/rdoc/RubyXL/BorderContainer.html +105 -0
- data/rdoc/RubyXL/BorderEdge.html +156 -0
- data/rdoc/RubyXL/Break.html +105 -0
- data/rdoc/RubyXL/BreakList.html +105 -0
- data/rdoc/RubyXL/CalculationChain.html +159 -0
- data/rdoc/RubyXL/CalculationChainCell.html +108 -0
- data/rdoc/RubyXL/CalculationProperties.html +105 -0
- data/rdoc/RubyXL/Cell.html +428 -0
- data/rdoc/RubyXL/CellSmartTag.html +105 -0
- data/rdoc/RubyXL/CellSmartTagContainer.html +105 -0
- data/rdoc/RubyXL/CellSmartTagProperty.html +105 -0
- data/rdoc/RubyXL/CellStyle.html +108 -0
- data/rdoc/RubyXL/CellStyleContainer.html +105 -0
- data/rdoc/RubyXL/CellStyleXFContainer.html +105 -0
- data/rdoc/RubyXL/CellValue.html +108 -0
- data/rdoc/RubyXL/CellWatch.html +105 -0
- data/rdoc/RubyXL/CellWatchContainer.html +105 -0
- data/rdoc/RubyXL/CellXFContainer.html +105 -0
- data/rdoc/RubyXL/Chartsheet.html +105 -0
- data/rdoc/RubyXL/ChartsheetPageSetup.html +105 -0
- data/rdoc/RubyXL/ChartsheetProperties.html +108 -0
- data/rdoc/RubyXL/ChartsheetProtection.html +108 -0
- data/rdoc/RubyXL/ChartsheetView.html +105 -0
- data/rdoc/RubyXL/ChartsheetViewContainer.html +105 -0
- data/rdoc/RubyXL/Color.html +163 -0
- data/rdoc/RubyXL/ColorFilter.html +105 -0
- data/rdoc/RubyXL/ColorScale.html +105 -0
- data/rdoc/RubyXL/ColorScheme.html +105 -0
- data/rdoc/RubyXL/ColorSet.html +105 -0
- data/rdoc/RubyXL/Colors.html +105 -0
- data/rdoc/RubyXL/ColumnRange.html +233 -0
- data/rdoc/RubyXL/ColumnRanges.html +275 -0
- data/rdoc/RubyXL/ConditionalFormatValue.html +105 -0
- data/rdoc/RubyXL/ConditionalFormatting.html +105 -0
- data/rdoc/RubyXL/ConditionalFormattingRule.html +105 -0
- data/rdoc/RubyXL/CustomFilter.html +105 -0
- data/rdoc/RubyXL/CustomFilterContainer.html +105 -0
- data/rdoc/RubyXL/CustomProperty.html +105 -0
- data/rdoc/RubyXL/CustomPropertyContainer.html +105 -0
- data/rdoc/RubyXL/CustomSheetView.html +105 -0
- data/rdoc/RubyXL/CustomSheetViews.html +105 -0
- data/rdoc/RubyXL/CustomWorkbookView.html +105 -0
- data/rdoc/RubyXL/CustomWorkbookViewContainer.html +105 -0
- data/rdoc/RubyXL/DXF.html +105 -0
- data/rdoc/RubyXL/DXFs.html +105 -0
- data/rdoc/RubyXL/DataBar.html +105 -0
- data/rdoc/RubyXL/DataConsolidate.html +105 -0
- data/rdoc/RubyXL/DataConsolidationReference.html +105 -0
- data/rdoc/RubyXL/DataConsolidationReferences.html +105 -0
- data/rdoc/RubyXL/DataValidation.html +108 -0
- data/rdoc/RubyXL/DataValidations.html +105 -0
- data/rdoc/RubyXL/DateGroupItem.html +108 -0
- data/rdoc/RubyXL/DefinedName.html +105 -0
- data/rdoc/RubyXL/DefinedNames.html +105 -0
- data/rdoc/RubyXL/DocumentProperties.html +271 -0
- data/rdoc/RubyXL/DynamicFilter.html +105 -0
- data/rdoc/RubyXL/EmbeddedControl.html +105 -0
- data/rdoc/RubyXL/EmbeddedControlContainer.html +105 -0
- data/rdoc/RubyXL/Extension.html +228 -0
- data/rdoc/RubyXL/ExtensionStorageArea.html +108 -0
- data/rdoc/RubyXL/ExternalReference.html +105 -0
- data/rdoc/RubyXL/ExternalReferences.html +105 -0
- data/rdoc/RubyXL/FieldItem.html +105 -0
- data/rdoc/RubyXL/FileRecoveryProperties.html +105 -0
- data/rdoc/RubyXL/FileSharing.html +108 -0
- data/rdoc/RubyXL/FileVersion.html +108 -0
- data/rdoc/RubyXL/Fill.html +105 -0
- data/rdoc/RubyXL/FillContainer.html +105 -0
- data/rdoc/RubyXL/FilterContainer.html +105 -0
- data/rdoc/RubyXL/FloatNode.html +105 -0
- data/rdoc/RubyXL/FloatValue.html +105 -0
- data/rdoc/RubyXL/Font.html +655 -0
- data/rdoc/RubyXL/FontContainer.html +105 -0
- data/rdoc/RubyXL/FontScheme.html +105 -0
- data/rdoc/RubyXL/FormatScheme.html +105 -0
- data/rdoc/RubyXL/Formula.html +108 -0
- data/rdoc/RubyXL/FunctionGroup.html +105 -0
- data/rdoc/RubyXL/FunctionGroupContainer.html +105 -0
- data/rdoc/RubyXL/GenericStorage.html +344 -0
- data/rdoc/RubyXL/GradientFill.html +105 -0
- data/rdoc/RubyXL/HeaderFooterSettings.html +105 -0
- data/rdoc/RubyXL/Hyperlink.html +105 -0
- data/rdoc/RubyXL/HyperlinkContainer.html +105 -0
- data/rdoc/RubyXL/IconFilter.html +105 -0
- data/rdoc/RubyXL/IconSet.html +105 -0
- data/rdoc/RubyXL/IgnoredError.html +105 -0
- data/rdoc/RubyXL/IgnoredErrorContainer.html +105 -0
- data/rdoc/RubyXL/IndexedColorContainer.html +105 -0
- data/rdoc/RubyXL/InputCells.html +105 -0
- data/rdoc/RubyXL/IntegerNode.html +105 -0
- data/rdoc/RubyXL/IntegerValue.html +105 -0
- data/rdoc/RubyXL/LegacyCell.html +1498 -0
- data/rdoc/RubyXL/LegacyWorkbook.html +1283 -0
- data/rdoc/RubyXL/LegacyWorksheet.html +3291 -0
- data/rdoc/RubyXL/MRUColorContainer.html +105 -0
- data/rdoc/RubyXL/MergedCell.html +105 -0
- data/rdoc/RubyXL/MergedCells.html +105 -0
- data/rdoc/RubyXL/NumFmt.html +105 -0
- data/rdoc/RubyXL/NumberFormat.html +160 -0
- data/rdoc/RubyXL/NumberFormatContainer.html +173 -0
- data/rdoc/RubyXL/OLEObject.html +105 -0
- data/rdoc/RubyXL/OLEObjects.html +105 -0
- data/rdoc/RubyXL/OLESize.html +105 -0
- data/rdoc/RubyXL/OOXMLObject.html +862 -0
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +105 -0
- data/rdoc/RubyXL/OutlineProperties.html +108 -0
- data/rdoc/RubyXL/PageMargins.html +105 -0
- data/rdoc/RubyXL/PageSetup.html +105 -0
- data/rdoc/RubyXL/PageSetupProperties.html +108 -0
- data/rdoc/RubyXL/Pane.html +105 -0
- data/rdoc/RubyXL/Parser.html +348 -0
- data/rdoc/RubyXL/PatternFill.html +105 -0
- data/rdoc/RubyXL/PhoneticProperties.html +105 -0
- data/rdoc/RubyXL/PhoneticRun.html +105 -0
- data/rdoc/RubyXL/PivotArea.html +105 -0
- data/rdoc/RubyXL/PivotCache.html +105 -0
- data/rdoc/RubyXL/PivotCaches.html +105 -0
- data/rdoc/RubyXL/PivotReference.html +105 -0
- data/rdoc/RubyXL/PivotReferenceContainer.html +105 -0
- data/rdoc/RubyXL/PivotTableSelection.html +105 -0
- data/rdoc/RubyXL/PrintOptions.html +105 -0
- data/rdoc/RubyXL/ProtectedRange.html +105 -0
- data/rdoc/RubyXL/ProtectedRanges.html +105 -0
- data/rdoc/RubyXL/Protection.html +105 -0
- data/rdoc/RubyXL/RID.html +105 -0
- data/rdoc/RubyXL/RawOOXML.html +225 -0
- data/rdoc/RubyXL/Reference.html +642 -0
- data/rdoc/RubyXL/Relationship.html +105 -0
- data/rdoc/RubyXL/RichText.html +105 -0
- data/rdoc/RubyXL/RichTextRun.html +105 -0
- data/rdoc/RubyXL/Row.html +105 -0
- data/rdoc/RubyXL/RunProperties.html +108 -0
- data/rdoc/RubyXL/Scenario.html +105 -0
- data/rdoc/RubyXL/ScenarioContainer.html +105 -0
- data/rdoc/RubyXL/Selection.html +105 -0
- data/rdoc/RubyXL/SharedStringsTable.html +397 -0
- data/rdoc/RubyXL/Sheet.html +105 -0
- data/rdoc/RubyXL/SheetCalculationProperties.html +105 -0
- data/rdoc/RubyXL/SheetData.html +105 -0
- data/rdoc/RubyXL/Sheets.html +105 -0
- data/rdoc/RubyXL/SmartTagContainer.html +105 -0
- data/rdoc/RubyXL/SmartTagProperties.html +105 -0
- data/rdoc/RubyXL/SmartTagType.html +105 -0
- data/rdoc/RubyXL/SmartTagTypeContainer.html +105 -0
- data/rdoc/RubyXL/SortCondition.html +105 -0
- data/rdoc/RubyXL/SortState.html +105 -0
- data/rdoc/RubyXL/Sqref.html +199 -0
- data/rdoc/RubyXL/Stop.html +108 -0
- data/rdoc/RubyXL/StringNode.html +105 -0
- data/rdoc/RubyXL/StringValue.html +105 -0
- data/rdoc/RubyXL/Stylesheet.html +105 -0
- data/rdoc/RubyXL/TableParts.html +105 -0
- data/rdoc/RubyXL/TableStyle.html +105 -0
- data/rdoc/RubyXL/TableStyles.html +105 -0
- data/rdoc/RubyXL/Text.html +195 -0
- data/rdoc/RubyXL/Theme.html +105 -0
- data/rdoc/RubyXL/ThemeElements.html +105 -0
- data/rdoc/RubyXL/Top10.html +105 -0
- data/rdoc/RubyXL/Variant.html +108 -0
- data/rdoc/RubyXL/Vector.html +105 -0
- data/rdoc/RubyXL/VectorValue.html +105 -0
- data/rdoc/RubyXL/WebPublishObject.html +105 -0
- data/rdoc/RubyXL/WebPublishObjectContainer.html +105 -0
- data/rdoc/RubyXL/WebPublishingItem.html +108 -0
- data/rdoc/RubyXL/WebPublishingItemContainer.html +105 -0
- data/rdoc/RubyXL/WebPublishingProperties.html +105 -0
- data/rdoc/RubyXL/Workbook.html +105 -0
- data/rdoc/RubyXL/WorkbookProperties.html +108 -0
- data/rdoc/RubyXL/WorkbookProtection.html +105 -0
- data/rdoc/RubyXL/WorkbookRelationships.html +316 -0
- data/rdoc/RubyXL/WorkbookView.html +105 -0
- data/rdoc/RubyXL/WorkbookViews.html +105 -0
- data/rdoc/RubyXL/Worksheet.html +105 -0
- data/rdoc/RubyXL/WorksheetDimensions.html +105 -0
- data/rdoc/RubyXL/WorksheetFormatProperties.html +105 -0
- data/rdoc/RubyXL/WorksheetProperties.html +108 -0
- data/rdoc/RubyXL/WorksheetProtection.html +105 -0
- data/rdoc/RubyXL/WorksheetView.html +105 -0
- data/rdoc/RubyXL/WorksheetViews.html +105 -0
- data/rdoc/RubyXL/Writer.html +98 -0
- data/rdoc/RubyXL/Writer/ContentTypesWriter.html +289 -0
- data/rdoc/RubyXL/Writer/CoreWriter.html +210 -0
- data/rdoc/RubyXL/Writer/GenericWriter.html +348 -0
- data/rdoc/RubyXL/Writer/RootRelsWriter.html +193 -0
- data/rdoc/RubyXL/Writer/StylesWriter.html +191 -0
- data/rdoc/RubyXL/Writer/ThemeWriter.html +511 -0
- data/rdoc/RubyXL/Writer/WorkbookWriter.html +249 -0
- data/rdoc/RubyXL/Writer/WorksheetWriter.html +236 -0
- data/rdoc/RubyXL/XF.html +105 -0
- data/rdoc/created.rid +24 -21
- data/rdoc/index.html +216 -0
- data/rdoc/js/search_index.js +1 -1
- data/rdoc/table_of_contents.html +1496 -0
- data/rubyXL.gemspec +211 -4
- data/spec/lib/parser_spec.rb +18 -6
- data/test/input/.gitkeep +0 -0
- data/test/output/.gitkeep +0 -0
- data/test/test_parse_write.rb +15 -0
- metadata +211 -4
- data/lib/rubyXL/objects/sheet_view.rb +0 -71
data/lib/rubyXL/parser.rb
CHANGED
@@ -44,17 +44,18 @@ module RubyXL
|
|
44
44
|
wb.relationship_container = RubyXL::WorkbookRelationships.parse_file(dir_path)
|
45
45
|
|
46
46
|
unless @data_only
|
47
|
-
wb.media
|
48
|
-
wb.external_links
|
49
|
-
wb.external_links_rels
|
50
|
-
wb.drawings
|
51
|
-
wb.drawings_rels
|
52
|
-
wb.charts
|
53
|
-
wb.chart_rels
|
54
|
-
wb.printer_settings
|
55
|
-
wb.worksheet_rels
|
56
|
-
wb.
|
57
|
-
wb.
|
47
|
+
wb.media.load_dir(dir_path)
|
48
|
+
wb.external_links.load_dir(dir_path)
|
49
|
+
wb.external_links_rels.load_dir(dir_path)
|
50
|
+
wb.drawings.load_dir(dir_path)
|
51
|
+
wb.drawings_rels.load_dir(dir_path)
|
52
|
+
wb.charts.load_dir(dir_path)
|
53
|
+
wb.chart_rels.load_dir(dir_path)
|
54
|
+
wb.printer_settings.load_dir(dir_path)
|
55
|
+
wb.worksheet_rels.load_dir(dir_path)
|
56
|
+
wb.chartsheet_rels.load_dir(dir_path)
|
57
|
+
wb.macros.load_file(dir_path, 'vbaProject.bin')
|
58
|
+
wb.theme.load_file(dir_path, 'theme1.xml')
|
58
59
|
|
59
60
|
core_file = Nokogiri::XML.parse(File.open(File.join(dir_path, 'docProps', 'core.xml'), 'r'))
|
60
61
|
wb.creator = core_file.css('dc|creator').children.to_s
|
data/lib/rubyXL/workbook.rb
CHANGED
@@ -14,7 +14,7 @@ module RubyXL
|
|
14
14
|
include Enumerable
|
15
15
|
attr_accessor :worksheets, :filepath, :creator, :modifier, :created_at, :modified_at, :theme,
|
16
16
|
:media, :external_links, :external_links_rels, :drawings, :drawings_rels, :charts, :chart_rels,
|
17
|
-
:worksheet_rels, :printer_settings, :macros
|
17
|
+
:worksheet_rels, :chartsheet_rels, :printer_settings, :macros
|
18
18
|
|
19
19
|
attr_accessor :stylesheet, :shared_strings_container, :document_properties, :calculation_chain,
|
20
20
|
:relationship_container
|
@@ -45,6 +45,7 @@ module RubyXL
|
|
45
45
|
@charts = RubyXL::GenericStorage.new(File.join('xl', 'charts'))
|
46
46
|
@chart_rels = RubyXL::GenericStorage.new(File.join('xl', 'charts', '_rels'))
|
47
47
|
@worksheet_rels = RubyXL::GenericStorage.new(File.join('xl', 'worksheets', '_rels'))
|
48
|
+
@chartsheet_rels = RubyXL::GenericStorage.new(File.join('xl', 'chartsheets', '_rels'))
|
48
49
|
@theme = RubyXL::GenericStorage.new(File.join('xl', 'theme'))
|
49
50
|
@printer_settings = RubyXL::GenericStorage.new(File.join('xl', 'printerSettings')).binary
|
50
51
|
@macros = RubyXL::GenericStorage.new('xl').binary
|
@@ -121,7 +122,7 @@ module RubyXL
|
|
121
122
|
|
122
123
|
[ @media, @external_links, @external_links_rels,
|
123
124
|
@drawings, @drawings_rels, @charts, @chart_rels,
|
124
|
-
@printer_settings, @worksheet_rels, @macros ].each { |s| s.add_to_zip(zipfile) }
|
125
|
+
@printer_settings, @worksheet_rels, @chartsheet_rels, @macros ].each { |s| s.add_to_zip(zipfile) }
|
125
126
|
|
126
127
|
@worksheets.each_index { |i| Writer::WorksheetWriter.new(self, i).add_to_zip(zipfile) }
|
127
128
|
}
|
@@ -0,0 +1,404 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>README - rubyXL 2.1.3</title>
|
8
|
+
|
9
|
+
<link href="./fonts.css" rel="stylesheet">
|
10
|
+
<link href="./rdoc.css" rel="stylesheet">
|
11
|
+
|
12
|
+
<script type="text/javascript">
|
13
|
+
var rdoc_rel_prefix = "./";
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<script src="./js/jquery.js"></script>
|
17
|
+
<script src="./js/navigation.js"></script>
|
18
|
+
<script src="./js/search_index.js"></script>
|
19
|
+
<script src="./js/search.js"></script>
|
20
|
+
<script src="./js/searcher.js"></script>
|
21
|
+
<script src="./js/darkfish.js"></script>
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" role="document" class="file">
|
25
|
+
<nav role="navigation">
|
26
|
+
<div id="project-navigation">
|
27
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
+
<h2>
|
29
|
+
<a href="./index.html" rel="home">Home</a>
|
30
|
+
</h2>
|
31
|
+
|
32
|
+
<div id="table-of-contents-navigation">
|
33
|
+
<a href="./table_of_contents.html#pages">Pages</a>
|
34
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
35
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
+
<form action="#" method="get" accept-charset="utf-8">
|
41
|
+
<div id="search-field-wrapper">
|
42
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
+
aria-autocomplete="list" aria-controls="search-results"
|
44
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
45
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<ul id="search-results" aria-label="Search Results"
|
49
|
+
aria-busy="false" aria-expanded="false"
|
50
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
+
</form>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
56
|
+
|
57
|
+
<div class="nav-section">
|
58
|
+
<h3>Table of Contents</h3>
|
59
|
+
|
60
|
+
<ul class="link-list" role="directory">
|
61
|
+
<li><a href="#label-rubyXL">rubyXL</a>
|
62
|
+
<li><a href="#label-To+Install%3A">To Install:</a>
|
63
|
+
<li><a href="#label-To+Use%3A">To Use:</a>
|
64
|
+
<li><a href="#label-Parsing+an+existing+workbook">Parsing an existing workbook</a>
|
65
|
+
<li><a href="#label-Creating+a+new+Workbook">Creating a new Workbook</a>
|
66
|
+
<li><a href="#label-Accessing">Accessing</a>
|
67
|
+
<li><a href="#label-Accessing+a+Worksheet">Accessing a Worksheet</a>
|
68
|
+
<li><a href="#label-Accessing+just+the+values">Accessing just the values</a>
|
69
|
+
<li><a href="#label-Accessing+a+Row+%28Array+of+Cells%29">Accessing a Row (Array of Cells)</a>
|
70
|
+
<li><a href="#label-Accessing+a+Cell+object">Accessing a Cell object</a>
|
71
|
+
<li><a href="#label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties</a>
|
72
|
+
<li><a href="#label-Wrappers+for+accessing+Row+properties+">Wrappers for accessing Row properties </a>
|
73
|
+
<li><a href="#label-Accessing+column+properties">Accessing column properties</a>
|
74
|
+
<li><a href="#label-Table+identification">Table identification</a>
|
75
|
+
<li><a href="#label-Modifying">Modifying</a>
|
76
|
+
<li><a href="#label-Adding+Worksheets">Adding Worksheets</a>
|
77
|
+
<li><a href="#label-Adding+Cells">Adding Cells</a>
|
78
|
+
<li><a href="#label-Changing+Cells">Changing Cells</a>
|
79
|
+
<li><a href="#label-Changing+Fonts">Changing Fonts</a>
|
80
|
+
<li><a href="#label-Changing+Fills+++++">Changing Fills </a>
|
81
|
+
<li><a href="#label-Changing+Borders">Changing Borders</a>
|
82
|
+
<li><a href="#label-Changing+Alignment">Changing Alignment</a>
|
83
|
+
<li><a href="#label-Horizontal">Horizontal</a>
|
84
|
+
<li><a href="#label-Vertical">Vertical</a>
|
85
|
+
<li><a href="#label-Changing+Row+Height">Changing Row Height</a>
|
86
|
+
<li><a href="#label-Changing+Column+Width">Changing Column Width</a>
|
87
|
+
<li><a href="#label-Merging+Cells">Merging Cells</a>
|
88
|
+
<li><a href="#label-Insert+Row">Insert Row</a>
|
89
|
+
<li><a href="#label-Insert+Column">Insert Column</a>
|
90
|
+
<li><a href="#label-Delete+Row">Delete Row</a>
|
91
|
+
<li><a href="#label-Delete+Column">Delete Column</a>
|
92
|
+
<li><a href="#label-Insert+Cell">Insert Cell</a>
|
93
|
+
<li><a href="#label-Delete+Cell">Delete Cell</a>
|
94
|
+
<li><a href="#label-Writing">Writing</a>
|
95
|
+
<li><a href="#label-Miscellaneous">Miscellaneous</a>
|
96
|
+
<li><a href="#label-For+more+information">For more information</a>
|
97
|
+
<li><a href="#label-Contributing+to+rubyXL">Contributing to rubyXL</a>
|
98
|
+
<li><a href="#label-Copyright">Copyright</a>
|
99
|
+
</ul>
|
100
|
+
</div>
|
101
|
+
|
102
|
+
|
103
|
+
<div id="project-metadata">
|
104
|
+
<div id="fileindex-section" class="nav-section">
|
105
|
+
<h3>Pages</h3>
|
106
|
+
|
107
|
+
<ul class="link-list">
|
108
|
+
|
109
|
+
<li><a href="./README_rdoc.html">README</a>
|
110
|
+
|
111
|
+
</ul>
|
112
|
+
</div>
|
113
|
+
|
114
|
+
</div>
|
115
|
+
</nav>
|
116
|
+
|
117
|
+
<main role="main" aria-label="Page README.rdoc">
|
118
|
+
|
119
|
+
<h1 id="label-rubyXL">rubyXL<span><a href="#label-rubyXL">¶</a> <a href="#documentation">↑</a></span></h1>
|
120
|
+
|
121
|
+
<h2 id="label-To+Install%3A">To Install:<span><a href="#label-To+Install%3A">¶</a> <a href="#documentation">↑</a></span></h2>
|
122
|
+
|
123
|
+
<pre>gem install rubyXL</pre>
|
124
|
+
|
125
|
+
<h2 id="label-To+Use%3A">To Use:<span><a href="#label-To+Use%3A">¶</a> <a href="#documentation">↑</a></span></h2>
|
126
|
+
|
127
|
+
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'rubyXL'</span> <span class="ruby-comment"># Assuming rubygems is already required</span>
|
128
|
+
</pre>
|
129
|
+
|
130
|
+
<h3 id="label-Parsing+an+existing+workbook">Parsing an existing workbook<span><a href="#label-Parsing+an+existing+workbook">¶</a> <a href="#documentation">↑</a></span></h3>
|
131
|
+
|
132
|
+
<pre>workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")</pre>
|
133
|
+
|
134
|
+
<h3 id="label-Creating+a+new+Workbook">Creating a new Workbook<span><a href="#label-Creating+a+new+Workbook">¶</a> <a href="#documentation">↑</a></span></h3>
|
135
|
+
|
136
|
+
<pre>workbook = RubyXL::Workbook.new</pre>
|
137
|
+
|
138
|
+
<h3 id="label-Accessing">Accessing<span><a href="#label-Accessing">¶</a> <a href="#documentation">↑</a></span></h3>
|
139
|
+
|
140
|
+
<h4 id="label-Accessing+a+Worksheet">Accessing a Worksheet<span><a href="#label-Accessing+a+Worksheet">¶</a> <a href="#documentation">↑</a></span></h4>
|
141
|
+
|
142
|
+
<pre>workbook.worksheets[0] # Returns first worksheet
|
143
|
+
workbook[0] # Returns first worksheet
|
144
|
+
workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1"</pre>
|
145
|
+
|
146
|
+
<h4 id="label-Accessing+just+the+values">Accessing just the values<span><a href="#label-Accessing+just+the+values">¶</a> <a href="#documentation">↑</a></span></h4>
|
147
|
+
|
148
|
+
<pre>worksheet = workbook[0]
|
149
|
+
worksheet.extract_data # Produces a simple rectangular array that consists only of cell values (rather than the Cell objects)</pre>
|
150
|
+
|
151
|
+
<h4 id="label-Accessing+a+Row+%28Array+of+Cells%29">Accessing a Row (Array of Cells)<span><a href="#label-Accessing+a+Row+%28Array+of+Cells%29">¶</a> <a href="#documentation">↑</a></span></h4>
|
152
|
+
|
153
|
+
<pre>worksheet = workbook[0]
|
154
|
+
worksheet.sheet_data[0] # Returns first row of the worksheet
|
155
|
+
worksheet[0] # Returns first row of the worksheet</pre>
|
156
|
+
|
157
|
+
<h4 id="label-Accessing+a+Cell+object">Accessing a Cell object<span><a href="#label-Accessing+a+Cell+object">¶</a> <a href="#documentation">↑</a></span></h4>
|
158
|
+
|
159
|
+
<pre>worksheet = workbook[0]
|
160
|
+
worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
|
161
|
+
worksheet[0][0] # Returns cell A1 in the worksheet</pre>
|
162
|
+
|
163
|
+
<h4 id="label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties<span><a href="#label-Wrappers+for+accessing+Cell+properties">¶</a> <a href="#documentation">↑</a></span></h4>
|
164
|
+
|
165
|
+
<pre>cell = workbook[0][0][0]
|
166
|
+
cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
|
167
|
+
cell.font_name
|
168
|
+
cell.font_size
|
169
|
+
cell.font_color
|
170
|
+
cell.fill_color
|
171
|
+
cell.horizontal_alignment
|
172
|
+
cell.vertical_alignment
|
173
|
+
cell.border_top</pre>
|
174
|
+
|
175
|
+
<h4 id="label-Wrappers+for+accessing+Row+properties+">Wrappers for accessing Row properties <span><a href="#label-Wrappers+for+accessing+Row+properties+">¶</a> <a href="#documentation">↑</a></span></h4>
|
176
|
+
|
177
|
+
<p>Please note: these methods are being phased out in favor of the OOXML
|
178
|
+
object model.</p>
|
179
|
+
|
180
|
+
<pre>worksheet = workbook[0]
|
181
|
+
worksheet.get_row_fill(0)
|
182
|
+
worksheet.get_row_font_name(0)
|
183
|
+
worksheet.get_row_font_size(0)
|
184
|
+
worksheet.get_row_font_color(0)
|
185
|
+
worksheet.is_row_underlined(0)
|
186
|
+
worksheet.get_row_height(0)
|
187
|
+
worksheet.get_row_horizontal_alignment(0)
|
188
|
+
worksheet.get_row_vertical_alignment(0)
|
189
|
+
worksheet.get_row_border_right(0)</pre>
|
190
|
+
|
191
|
+
<h4 id="label-Accessing+column+properties">Accessing column properties<span><a href="#label-Accessing+column+properties">¶</a> <a href="#documentation">↑</a></span></h4>
|
192
|
+
|
193
|
+
<p>Please note: these methods are being phased out in favor of the OOXML
|
194
|
+
object model.</p>
|
195
|
+
|
196
|
+
<pre>worksheet = workbook[0]
|
197
|
+
worksheet.get_column_fill(0)
|
198
|
+
worksheet.get_column_font_name(0)
|
199
|
+
worksheet.get_column_font_size(0)
|
200
|
+
worksheet.get_column_font_color(0)
|
201
|
+
worksheet.is_column_underlined(0)
|
202
|
+
worksheet.get_column_height(0)
|
203
|
+
worksheet.get_column_horizontal_alignment(0)
|
204
|
+
worksheet.get_column_vertical_alignment(0)
|
205
|
+
worksheet.get_column_border_right(0)</pre>
|
206
|
+
|
207
|
+
<h4 id="label-Table+identification">Table identification<span><a href="#label-Table+identification">¶</a> <a href="#documentation">↑</a></span></h4>
|
208
|
+
|
209
|
+
<pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
|
210
|
+
<span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_table</span>([<span class="ruby-string">"NAME"</span>, <span class="ruby-string">"AGE"</span>, <span class="ruby-string">"HEIGHT"</span>]) <span class="ruby-comment"># Returns hash of a table in the first worksheet, with the specified strings as headers, accessible by row and column</span>
|
211
|
+
<span class="ruby-comment">#it returns the following structure</span>
|
212
|
+
{
|
213
|
+
:<span class="ruby-constant">Name=</span><span class="ruby-operator">></span>[<span class="ruby-string">"John"</span>, <span class="ruby-string">"Jane"</span>, <span class="ruby-string">"Joe"</span>],
|
214
|
+
:<span class="ruby-constant">Height=</span><span class="ruby-operator">></span>[<span class="ruby-value">70</span>, <span class="ruby-value">65</span>, <span class="ruby-value">68</span>],
|
215
|
+
:<span class="ruby-constant">Age=</span><span class="ruby-operator">></span>[<span class="ruby-value">30</span>, <span class="ruby-value">25</span>, <span class="ruby-value">35</span>]
|
216
|
+
:<span class="ruby-identifier">table=</span><span class="ruby-operator">></span>[
|
217
|
+
{:<span class="ruby-constant">Name=</span><span class="ruby-operator">></span><span class="ruby-string">"John"</span>, :<span class="ruby-constant">Height=</span><span class="ruby-operator">></span><span class="ruby-value">70</span>, :<span class="ruby-constant">Age=</span><span class="ruby-operator">></span><span class="ruby-value">30</span>},
|
218
|
+
{:<span class="ruby-constant">Name=</span><span class="ruby-operator">></span><span class="ruby-string">"Jane"</span>, :<span class="ruby-constant">Height=</span><span class="ruby-operator">></span><span class="ruby-value">65</span>, :<span class="ruby-constant">Age=</span><span class="ruby-operator">></span><span class="ruby-value">25</span>},
|
219
|
+
{:<span class="ruby-constant">Name=</span><span class="ruby-operator">></span><span class="ruby-string">"Joe"</span>, :<span class="ruby-constant">Height=</span><span class="ruby-operator">></span><span class="ruby-value">68</span>, :<span class="ruby-constant">Age=</span><span class="ruby-operator">></span><span class="ruby-value">35</span>}
|
220
|
+
]
|
221
|
+
}
|
222
|
+
</pre>
|
223
|
+
|
224
|
+
<h3 id="label-Modifying">Modifying<span><a href="#label-Modifying">¶</a> <a href="#documentation">↑</a></span></h3>
|
225
|
+
|
226
|
+
<h4 id="label-Adding+Worksheets">Adding Worksheets<span><a href="#label-Adding+Worksheets">¶</a> <a href="#documentation">↑</a></span></h4>
|
227
|
+
|
228
|
+
<pre>worlsheet = workbook.add_worksheet('Sheet2')</pre>
|
229
|
+
|
230
|
+
<h4 id="label-Adding+Cells">Adding Cells<span><a href="#label-Adding+Cells">¶</a> <a href="#documentation">↑</a></span></h4>
|
231
|
+
|
232
|
+
<pre>worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
|
233
|
+
worksheet.add_cell(0, 1, '', 'A1') # Sets formula in the cell B1 to '=A1'</pre>
|
234
|
+
|
235
|
+
<h4 id="label-Changing+Cells">Changing Cells<span><a href="#label-Changing+Cells">¶</a> <a href="#documentation">↑</a></span></h4>
|
236
|
+
|
237
|
+
<pre>worksheet[0][0].change_contents("", worksheet[0][0].formula) # Sets value of cell A1 to empty string, preserves formula</pre>
|
238
|
+
|
239
|
+
<h4 id="label-Changing+Fonts">Changing Fonts<span><a href="#label-Changing+Fonts">¶</a> <a href="#documentation">↑</a></span></h4>
|
240
|
+
|
241
|
+
<pre>worksheet.sheet_data[0][0].change_font_bold(true) # Makes A1 bold
|
242
|
+
worksheet.change_row_italics(0,true) # Makes first row italicized
|
243
|
+
worksheet.change_column_font_name(0, 'Courier') # Makes first column have font Courier</pre>
|
244
|
+
|
245
|
+
<h4 id="label-Changing+Fills+++++">Changing Fills <span><a href="#label-Changing+Fills+++++">¶</a> <a href="#documentation">↑</a></span></h4>
|
246
|
+
|
247
|
+
<pre>worksheet.sheet_data[0][0].change_fill('0ba53d') # Sets A1 to have fill #0ba53d
|
248
|
+
worksheet.change_row_fill(0, '0ba53d') # Sets first row to have fill #0ba53d
|
249
|
+
worksheet.change_column_fill(0, '0ba53d') # Sets first column to have fill #0ba53d</pre>
|
250
|
+
|
251
|
+
<h4 id="label-Changing+Borders">Changing Borders<span><a href="#label-Changing+Borders">¶</a> <a href="#documentation">↑</a></span></h4>
|
252
|
+
|
253
|
+
<pre># Possible weights: hairline, thin, medium, thick
|
254
|
+
# Possible "directions": top, bottom, left, right, diagonal
|
255
|
+
worksheet.sheet_data[0][0].change_border_top('thin') # Sets A1 to have a top, thin border
|
256
|
+
worksheet.change_row_border_left(0, 'hairline') # Sets first row to have a left, hairline border
|
257
|
+
worksheet.change_column_border_diagonal(0, 'medium') # Sets first column to have diagonal, medium border</pre>
|
258
|
+
|
259
|
+
<h4 id="label-Changing+Alignment">Changing Alignment<span><a href="#label-Changing+Alignment">¶</a> <a href="#documentation">↑</a></span></h4>
|
260
|
+
|
261
|
+
<h5 id="label-Horizontal">Horizontal<span><a href="#label-Horizontal">¶</a> <a href="#documentation">↑</a></span></h5>
|
262
|
+
|
263
|
+
<p>center, distributed, justify, left, right</p>
|
264
|
+
|
265
|
+
<pre>worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
|
266
|
+
worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
|
267
|
+
worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned</pre>
|
268
|
+
|
269
|
+
<h5 id="label-Vertical">Vertical<span><a href="#label-Vertical">¶</a> <a href="#documentation">↑</a></span></h5>
|
270
|
+
|
271
|
+
<p>bottom, center, distributed, top</p>
|
272
|
+
|
273
|
+
<pre>worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
|
274
|
+
worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
|
275
|
+
worksheet.change_column_vertical_alignment(0, 'top') # Sets first column to be top aligned</pre>
|
276
|
+
|
277
|
+
<h4 id="label-Changing+Row+Height">Changing Row Height<span><a href="#label-Changing+Row+Height">¶</a> <a href="#documentation">↑</a></span></h4>
|
278
|
+
|
279
|
+
<pre>worksheet.change_row_height(0, 30) # Sets first row height to 30</pre>
|
280
|
+
|
281
|
+
<h4 id="label-Changing+Column+Width">Changing Column Width<span><a href="#label-Changing+Column+Width">¶</a> <a href="#documentation">↑</a></span></h4>
|
282
|
+
|
283
|
+
<pre>worksheet.change_column_width(0, 30) # Sets first column width to 30</pre>
|
284
|
+
|
285
|
+
<h4 id="label-Merging+Cells">Merging Cells<span><a href="#label-Merging+Cells">¶</a> <a href="#documentation">↑</a></span></h4>
|
286
|
+
|
287
|
+
<pre>worksheet.merge_cells(0, 0, 1, 1) # Merges A1:B2</pre>
|
288
|
+
|
289
|
+
<h4 id="label-Insert+Row">Insert Row<span><a href="#label-Insert+Row">¶</a> <a href="#documentation">↑</a></span></h4>
|
290
|
+
|
291
|
+
<p>This method will insert a row at specified index, pushing all rows below it
|
292
|
+
down. It also copies styles from row above.</p>
|
293
|
+
|
294
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
295
|
+
have been moved, as the formulas do not adapt to the shifted rows</p>
|
296
|
+
|
297
|
+
<pre>worksheet.insert_row(1)</pre>
|
298
|
+
|
299
|
+
<h4 id="label-Insert+Column">Insert Column<span><a href="#label-Insert+Column">¶</a> <a href="#documentation">↑</a></span></h4>
|
300
|
+
|
301
|
+
<p>This method will insert a column at specified index, pushing all columns to
|
302
|
+
the right of it one to the right. It also copies styles from column to the
|
303
|
+
left</p>
|
304
|
+
|
305
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
306
|
+
have been moved, as the formulas do not adapt to the shifted columns</p>
|
307
|
+
|
308
|
+
<pre>worksheet.insert_column(1)</pre>
|
309
|
+
|
310
|
+
<h4 id="label-Delete+Row">Delete Row<span><a href="#label-Delete+Row">¶</a> <a href="#documentation">↑</a></span></h4>
|
311
|
+
|
312
|
+
<p>This method will delete a row at specified index, pushing all rows below it
|
313
|
+
up.</p>
|
314
|
+
|
315
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
316
|
+
have been moved, as the formulas do not adapt to the shifted rows</p>
|
317
|
+
|
318
|
+
<pre>worksheet.delete_row(1)</pre>
|
319
|
+
|
320
|
+
<h4 id="label-Delete+Column">Delete Column<span><a href="#label-Delete+Column">¶</a> <a href="#documentation">↑</a></span></h4>
|
321
|
+
|
322
|
+
<p>This method will delete a column at specified index, pushing all columns to
|
323
|
+
the right of it left.</p>
|
324
|
+
|
325
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
326
|
+
have been moved, as the formulas do not adapt to the shifted columns</p>
|
327
|
+
|
328
|
+
<pre>worksheet.delete_column(1)</pre>
|
329
|
+
|
330
|
+
<h4 id="label-Insert+Cell">Insert Cell<span><a href="#label-Insert+Cell">¶</a> <a href="#documentation">↑</a></span></h4>
|
331
|
+
|
332
|
+
<p>This method will insert a cell at specified position. It takes a :right or
|
333
|
+
:down option, to shift cells either left or down upon inserting (nil means
|
334
|
+
replacing the cell)</p>
|
335
|
+
|
336
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
337
|
+
have been moved, as the formulas do not adapt to the shifted cells</p>
|
338
|
+
|
339
|
+
<pre>worksheet.insert_cell(0, 0, "blah", formula = nil, :right) # Inserts cell at A1, shifts cells in first row right
|
340
|
+
worksheet.insert_cell(0, 0, "blah", formula = nil, :down) # Inserts cell at A1, shifts cells in first column down
|
341
|
+
worksheet.insert_cell(0, 0, "blah") # Inserts cell at A1, shifts nothing</pre>
|
342
|
+
|
343
|
+
<h4 id="label-Delete+Cell">Delete Cell<span><a href="#label-Delete+Cell">¶</a> <a href="#documentation">↑</a></span></h4>
|
344
|
+
|
345
|
+
<p>This method will delete a cell at specified position. It takes a :left or
|
346
|
+
:up option, to shift cells either up or left upon deletion (nil means
|
347
|
+
simply deleting the cell contents)</p>
|
348
|
+
|
349
|
+
<p>WARNING: Use of this method WILL break formulas referencing cells which
|
350
|
+
have been moved, as the formulas do not adapt to the shifted cells</p>
|
351
|
+
|
352
|
+
<pre>worksheet.delete_cell(0, 0, :left) # Deletes A1, shifts contents of first row left
|
353
|
+
worksheet.delete_cell(0, 0, :up) # Deletes A1, shifts contents of first column up
|
354
|
+
worksheet.delete_cell(0, 0) # Deletes A1, does not shift cells</pre>
|
355
|
+
|
356
|
+
<h3 id="label-Writing">Writing<span><a href="#label-Writing">¶</a> <a href="#documentation">↑</a></span></h3>
|
357
|
+
|
358
|
+
<pre>workbook.write("path/to/desired/Excel/file.xlsx")</pre>
|
359
|
+
|
360
|
+
<h3 id="label-Miscellaneous">Miscellaneous<span><a href="#label-Miscellaneous">¶</a> <a href="#documentation">↑</a></span></h3>
|
361
|
+
|
362
|
+
<pre>Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
|
363
|
+
Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index</pre>
|
364
|
+
|
365
|
+
<h2 id="label-For+more+information">For more information<span><a href="#label-For+more+information">¶</a> <a href="#documentation">↑</a></span></h2>
|
366
|
+
|
367
|
+
<p>Take a look at the files in spec/lib/ for rspecs on most methods</p>
|
368
|
+
|
369
|
+
<h2 id="label-Contributing+to+rubyXL">Contributing to rubyXL<span><a href="#label-Contributing+to+rubyXL">¶</a> <a href="#documentation">↑</a></span></h2>
|
370
|
+
<ul><li>
|
371
|
+
<p>Check out the latest master to make sure the feature hasn’t been
|
372
|
+
implemented or the bug hasn’t been fixed yet</p>
|
373
|
+
</li><li>
|
374
|
+
<p>Check out the issue tracker to make sure someone already hasn’t requested
|
375
|
+
it and/or contributed it</p>
|
376
|
+
</li><li>
|
377
|
+
<p>Fork the project</p>
|
378
|
+
</li><li>
|
379
|
+
<p>Start a feature/bugfix branch</p>
|
380
|
+
</li><li>
|
381
|
+
<p>Commit and push until you are happy with your contribution</p>
|
382
|
+
</li><li>
|
383
|
+
<p>Make sure to add tests for it. This is important so I don’t break it in a
|
384
|
+
future version unintentionally.</p>
|
385
|
+
</li><li>
|
386
|
+
<p>Please try not to mess with the Rakefile, version, or history. If you want
|
387
|
+
to have your own version, or is otherwise necessary, that is fine, but
|
388
|
+
please isolate to its own commit so I can cherry-pick around it.</p>
|
389
|
+
</li></ul>
|
390
|
+
|
391
|
+
<h2 id="label-Copyright">Copyright<span><a href="#label-Copyright">¶</a> <a href="#documentation">↑</a></span></h2>
|
392
|
+
|
393
|
+
<p>Copyright © 2011 Vivek Bhagwat, 2013-2014 Wesha. See LICENSE.txt for
|
394
|
+
further details.</p>
|
395
|
+
</main>
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
<footer id="validator-badges" role="contentinfo">
|
400
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
401
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
|
402
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
403
|
+
</footer>
|
404
|
+
|