Skip to content

Commit 46a1ef2

Browse files
committed
Follow correct mental model in examples/docs: position and generate after all content is added
1 parent e26ad65 commit 46a1ef2

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

QUICK_START.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ sheet.add_row!(:person2)
3434
.add!(:name, value: 'Bob')
3535
.add!(:age, value: 25)
3636

37-
# Generate and save
37+
# Position and generate sheet (after all content is added)
38+
sheet.position_rows!
3839
sheet.generate_sheet!
3940
File.write('people.xlsx', document.file_contents)
4041

@@ -72,6 +73,8 @@ sheet.add_row!(:total)
7273
.add!(:label, value: 'Total')
7374
.add!(:value, row1.ref(:value) + row2.ref(:value))
7475

76+
# Position and generate sheet (after all content is added)
77+
sheet.position_rows!
7578
sheet.generate_sheet!
7679
File.write('math.xlsx', document.file_contents)
7780
```
@@ -103,6 +106,8 @@ sheet.add_row!(:header)
103106
sheet.add_row!(:data)
104107
.add!(:category, value: 'Data')
105108

109+
# Position and generate sheet (after all content is added)
110+
sheet.position_rows!
106111
sheet.generate_sheet!
107112
File.write('styled.xlsx', document.file_contents)
108113
```
@@ -148,6 +153,8 @@ data.each_with_index do |item, i|
148153
.add!(:amount, value: item[:amount])
149154
end
150155

156+
# Position and generate sheet (after all content is added)
157+
sheet.position_rows!
151158
sheet.generate_sheet!
152159
```
153160

@@ -178,4 +185,3 @@ rounded = Zaxcel::Functions.round(value, precision: 2)
178185
- Open an issue on GitHub
179186

180187
Happy spreadsheet building! 📊
181-

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ sheet.add_row!(:total)
7272
.add!(:column_1, value: 'Total')
7373
.add!(:column_2, row_1.ref(:column_2) + row_2.ref(:column_2))
7474

75-
# Finalize the sheet (position rows before generating so references resolve)
75+
# Finalize the sheet (position and generate after all content is added)
7676
sheet.position_rows!
7777
sheet.generate_sheet!
7878

@@ -133,10 +133,6 @@ row_1 = data_sheet.add_row!(:row_1)
133133
.add!(:category, value: 'Sales')
134134
.add!(:value, value: 1000)
135135

136-
# Prepare the data sheet so other sheets can reference it
137-
data_sheet.position_rows!
138-
data_sheet.generate_sheet!
139-
140136
# Create summary sheet that references the data sheet
141137
summary_sheet = document.add_sheet!('Summary')
142138
summary_sheet.add_column!(:description)
@@ -146,8 +142,12 @@ summary_sheet.add_row!(:sales_summary)
146142
.add!(:description, value: 'Total Sales')
147143
.add!(:amount, data_sheet.cell_ref(:value, :row_1))
148144

149-
summary_sheet.position_rows!
150-
summary_sheet.generate_sheet!
145+
# Position and generate all sheets at once (after all content is added)
146+
# This allows bidirectional references between sheets
147+
document.sheet_by_name.values.each do |sheet|
148+
sheet.position_rows!
149+
sheet.generate_sheet!
150+
end
151151
```
152152

153153
### Styling

examples/basic_spreadsheet.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
# Basic example of creating a simple spreadsheet with Zaxcel
66

7-
require 'bundler/setup'
87
require 'zaxcel'
98

109
# Create a new document
@@ -86,7 +85,7 @@
8685
style: :total,
8786
)
8887

89-
# Position rows before generating so references resolve
88+
# Position and generate sheet (do this after all rows/columns are defined)
9089
sheet.position_rows!
9190
sheet.generate_sheet!
9291

examples/cross_sheet_references.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
# frozen_string_literal: true
44

55
# Example demonstrating cross-sheet references in Zaxcel
6-
7-
require 'bundler/setup'
86
require 'zaxcel'
97

108
document = Zaxcel::Document.new
@@ -36,9 +34,6 @@
3634
product_rows << row
3735
end
3836

39-
data_sheet.position_rows!
40-
data_sheet.generate_sheet!
41-
4237
# Create a summary sheet that references the data sheet
4338
summary_sheet = document.add_sheet!('Summary')
4439
summary_sheet.add_column!(:metric, header: 'Metric', header_style: :header)
@@ -92,8 +87,13 @@
9287
.add!(:metric, value: 'Highest Price')
9388
.add!(:value, value: max_price, style: :currency)
9489

95-
summary_sheet.position_rows!
96-
summary_sheet.generate_sheet!
90+
# Position and generate all sheets at once (after all sheets are built)
91+
document.sheet_by_name.values.each do |sheet|
92+
sheet.position_rows!
93+
end
94+
document.sheet_by_name.values.each do |sheet|
95+
sheet.generate_sheet!
96+
end
9797

9898
# Write to file (binary-safe via Tempfile)
9999
filename = 'cross_sheet_example.xlsx'

0 commit comments

Comments
 (0)