writeexcel 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +7 -0
- data/VERSION +1 -1
- data/examples/chart_area.rb +5 -5
- data/examples/chart_bar.rb +5 -5
- data/examples/chart_column.rb +5 -5
- data/examples/chart_line.rb +5 -5
- data/examples/chart_pie.rb +5 -5
- data/examples/chart_scatter.rb +5 -5
- data/examples/chart_stock.rb +2 -2
- data/lib/writeexcel/biffwriter.rb +1 -1
- data/lib/writeexcel/chart.rb +73 -141
- data/lib/writeexcel/charts/area.rb +9 -8
- data/lib/writeexcel/charts/bar.rb +9 -10
- data/lib/writeexcel/charts/column.rb +9 -10
- data/lib/writeexcel/charts/external.rb +5 -1
- data/lib/writeexcel/charts/line.rb +9 -8
- data/lib/writeexcel/charts/pie.rb +9 -10
- data/lib/writeexcel/charts/scatter.rb +9 -10
- data/lib/writeexcel/charts/stock.rb +9 -8
- data/lib/writeexcel/colors.rb +6 -1
- data/lib/writeexcel/compatibility.rb +1 -9
- data/lib/writeexcel/format.rb +6 -1
- data/lib/writeexcel/formula.rb +6 -12
- data/lib/writeexcel/helper.rb +22 -0
- data/lib/writeexcel/storage_lite.rb +15 -18
- data/lib/writeexcel/workbook.rb +21 -21
- data/lib/writeexcel/worksheet.rb +16 -36
- data/lib/writeexcel.rb +9 -11
- data/test/test_60_chart_generic.rb +1 -1
- data/test/test_61_chart_subclasses.rb +7 -7
- data/test/test_62_chart_formats.rb +2 -2
- data/test/test_63_chart_area_formats.rb +2 -2
- data/test/test_example_match.rb +21 -21
- data/test/test_format.rb +51 -51
- data/test/test_formula.rb +1 -1
- data/test/test_worksheet.rb +1 -1
- data/writeexcel.gemspec +2 -2
- data/writeexcel.rdoc +599 -2
- metadata +3 -3
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
require 'writeexcel'
|
17
17
|
|
18
|
+
module Writeexcel
|
19
|
+
|
18
20
|
class Chart
|
19
21
|
|
20
22
|
# ==SYNOPSIS
|
@@ -28,7 +30,7 @@ class Chart
|
|
28
30
|
# workbook = Spreadsheet::WriteExcel.new('chart.xls')
|
29
31
|
# worksheet = workbook.add_worksheet
|
30
32
|
#
|
31
|
-
# chart = workbook.add_chart(:type => Chart::Pie)
|
33
|
+
# chart = workbook.add_chart(:type => 'Chart::Pie')
|
32
34
|
#
|
33
35
|
# # Configure the chart.
|
34
36
|
# chart.add_series(
|
@@ -51,7 +53,7 @@ class Chart
|
|
51
53
|
# This module implements Pie charts for Spreadsheet::WriteExcel. The chart
|
52
54
|
# object is created via the Workbook add_chart() method:
|
53
55
|
#
|
54
|
-
# chart = workbook.add_chart(:type => Chart::Pie)
|
56
|
+
# chart = workbook.add_chart(:type => 'Chart::Pie')
|
55
57
|
#
|
56
58
|
# Once the object is created it can be configured via the following methods
|
57
59
|
# that are common to all chart classes:
|
@@ -97,7 +99,7 @@ class Chart
|
|
97
99
|
# worksheet.write('A2', data)
|
98
100
|
#
|
99
101
|
# # Create a new chart object. In this case an embedded chart.
|
100
|
-
# chart = workbook.add_chart(:type => Chart::Pie, :embedded => 1)
|
102
|
+
# chart = workbook.add_chart(:type => 'Chart::Pie', :embedded => 1)
|
101
103
|
#
|
102
104
|
# # Configure the series.
|
103
105
|
# chart.add_series(
|
@@ -141,12 +143,7 @@ class Chart
|
|
141
143
|
donut = 0x0000 # Donut hole size.
|
142
144
|
grbit = 0x0002 # Option flags.
|
143
145
|
|
144
|
-
|
145
|
-
data = [angle].pack('v')
|
146
|
-
data += [donut].pack('v')
|
147
|
-
data += [grbit].pack('v')
|
148
|
-
|
149
|
-
append(header, data)
|
146
|
+
store_simple(record, length, angle, donut, grbit)
|
150
147
|
end
|
151
148
|
|
152
149
|
###############################################################################
|
@@ -167,4 +164,6 @@ class Chart
|
|
167
164
|
store_end
|
168
165
|
end
|
169
166
|
end
|
170
|
-
end
|
167
|
+
end # class Chart
|
168
|
+
|
169
|
+
end # module Writeexcel
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
require 'writeexcel'
|
17
17
|
|
18
|
+
module Writeexcel
|
19
|
+
|
18
20
|
class Chart
|
19
21
|
|
20
22
|
# ==SYNOPSIS
|
@@ -28,7 +30,7 @@ class Chart
|
|
28
30
|
# workbook = Spreadsheet::WriteExcel.new('chart.xls')
|
29
31
|
# worksheet = workbook.add_worksheet
|
30
32
|
#
|
31
|
-
# chart = workbook.add_chart(:type => Chart::Scatter)
|
33
|
+
# chart = workbook.add_chart(:type => 'Chart::Scatter')
|
32
34
|
#
|
33
35
|
# # Configure the chart.
|
34
36
|
# chart.add_series(
|
@@ -51,7 +53,7 @@ class Chart
|
|
51
53
|
# This module implements Scatter charts for WriteExcel.
|
52
54
|
# The chart object is created via the Workbook add_chart() method:
|
53
55
|
#
|
54
|
-
# chart = workbook.add_chart(:type => Chart::Scatter)
|
56
|
+
# chart = workbook.add_chart(:type => 'Chart::Scatter')
|
55
57
|
#
|
56
58
|
# Once the object is created it can be configured via the following
|
57
59
|
# methods that are common to all chart classes:
|
@@ -94,7 +96,7 @@ class Chart
|
|
94
96
|
# worksheet.write('A2', data)
|
95
97
|
#
|
96
98
|
# # Create a new chart object. In this case an embedded chart.
|
97
|
-
# chart = workbook.add_chart(:type => Chart::Scatter, :embedded => 1)
|
99
|
+
# chart = workbook.add_chart(:type => 'Chart::Scatter', :embedded => 1)
|
98
100
|
#
|
99
101
|
# # Configure the first series. (Sample 1)
|
100
102
|
# chart.add_series(
|
@@ -145,12 +147,7 @@ class Chart
|
|
145
147
|
bubble_type = 0x0001 # Bubble type.
|
146
148
|
grbit = 0x0000 # Option flags.
|
147
149
|
|
148
|
-
|
149
|
-
data = [bubble_ratio].pack('v')
|
150
|
-
data += [bubble_type].pack('v')
|
151
|
-
data += [grbit].pack('v')
|
152
|
-
|
153
|
-
append(header, data)
|
150
|
+
store_simple(record, length, bubble_ratio, bubble_type, grbit)
|
154
151
|
end
|
155
152
|
|
156
153
|
###############################################################################
|
@@ -190,4 +187,6 @@ class Chart
|
|
190
187
|
store_end
|
191
188
|
end
|
192
189
|
end
|
193
|
-
end
|
190
|
+
end # class Chart
|
191
|
+
|
192
|
+
end # module Writeexcel
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
require 'writeexcel'
|
17
17
|
|
18
|
+
module Writeexcel
|
19
|
+
|
18
20
|
class Chart
|
19
21
|
|
20
22
|
# ==SYNOPSIS
|
@@ -28,7 +30,7 @@ class Chart
|
|
28
30
|
# workbook = Spreadsheet::WriteExcel.new('chart.xls')
|
29
31
|
# worksheet = workbook.add_worksheet
|
30
32
|
#
|
31
|
-
# chart = workbook.add_chart(:type => Chart::Stock)
|
33
|
+
# chart = workbook.add_chart(:type => 'Chart::Stock')
|
32
34
|
#
|
33
35
|
# # Add a series for each Open-High-Low-Close.
|
34
36
|
# chart.add_series(:categories => '=Sheet1!$A$2:$A$6', :values => '=Sheet1!$B$2:$B$6')
|
@@ -46,7 +48,7 @@ class Chart
|
|
46
48
|
# This module implements Stock charts for WriteExcel. The chart object
|
47
49
|
# is created via the Workbook add_chart() method:
|
48
50
|
#
|
49
|
-
# chart = workbook.add_chart(:type => Chart::Stock)
|
51
|
+
# chart = workbook.add_chart(:type => 'Chart::Stock')
|
50
52
|
#
|
51
53
|
# Once the object is created it can be configured via the following methods
|
52
54
|
# that are common to all chart classes:
|
@@ -107,7 +109,7 @@ class Chart
|
|
107
109
|
# end
|
108
110
|
#
|
109
111
|
# # Create a new chart object. In this case an embedded chart.
|
110
|
-
# chart = workbook.add_chart(:type => Chart::Stock, ::embedded => 1)
|
112
|
+
# chart = workbook.add_chart(:type => 'Chart::Stock', ::embedded => 1)
|
111
113
|
#
|
112
114
|
# # Add a series for each of the Open-High-Low-Close columns.
|
113
115
|
# chart.add_series(
|
@@ -169,10 +171,7 @@ class Chart
|
|
169
171
|
length = 0x0002 # Number of bytes to follow.
|
170
172
|
grbit = 0x0000 # Option flags.
|
171
173
|
|
172
|
-
|
173
|
-
data = [grbit].pack('v')
|
174
|
-
|
175
|
-
append(header, data)
|
174
|
+
store_simple(record, length, grbit)
|
176
175
|
end
|
177
176
|
|
178
177
|
###############################################################################
|
@@ -209,4 +208,6 @@ class Chart
|
|
209
208
|
store_end
|
210
209
|
end
|
211
210
|
end
|
212
|
-
end
|
211
|
+
end # class Chart
|
212
|
+
|
213
|
+
end # module Writeexcel
|
data/lib/writeexcel/colors.rb
CHANGED
@@ -89,7 +89,7 @@ class String #:nodoc:
|
|
89
89
|
end
|
90
90
|
elsif @encoding == Encoding::BINARY
|
91
91
|
case encoding
|
92
|
-
when /ASCII/i
|
92
|
+
when /ASCII/i, /EUCJP/i, /SJIS/i
|
93
93
|
if self.ascii_only? || self.mbchar?('UTF8') || self.mbchar?('EUCJP') || self.mbchar?('SJIS')
|
94
94
|
raise Encoding::UndefinedConversionError
|
95
95
|
else
|
@@ -99,14 +99,6 @@ class String #:nodoc:
|
|
99
99
|
end
|
100
100
|
when /BINARY/i
|
101
101
|
self
|
102
|
-
when /EUCJP/i, /SJIS/i
|
103
|
-
if self.ascii_only? || self.mbchar?('UTF8') || self.mbchar?('EUCJP') || self.mbchar?('SJIS')
|
104
|
-
raise Encoding::UndefinedConversionError
|
105
|
-
else
|
106
|
-
str = String.new(self)
|
107
|
-
str.force_encoding(encoding)
|
108
|
-
str
|
109
|
-
end
|
110
102
|
when /UTF_8/i, /UTF_16LE/i, /UTF_16BE/i
|
111
103
|
raise Encoding::ConverterNotFoundError
|
112
104
|
else
|
data/lib/writeexcel/format.rb
CHANGED
@@ -20,6 +20,8 @@
|
|
20
20
|
require 'writeexcel/compatibility'
|
21
21
|
require 'writeexcel/colors'
|
22
22
|
|
23
|
+
module Writeexcel
|
24
|
+
|
23
25
|
class Format < Colors
|
24
26
|
|
25
27
|
###############################################################################
|
@@ -1592,4 +1594,7 @@ class Format < Colors
|
|
1592
1594
|
end
|
1593
1595
|
eval s
|
1594
1596
|
end
|
1595
|
-
end
|
1597
|
+
end # class Format
|
1598
|
+
|
1599
|
+
end # module Writeexcel
|
1600
|
+
|
data/lib/writeexcel/formula.rb
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
require 'strscan'
|
15
15
|
require 'writeexcel/excelformulaparser'
|
16
16
|
|
17
|
+
module Writeexcel
|
18
|
+
|
17
19
|
class Formula < ExcelFormulaParser #:nodoc:
|
18
20
|
require 'writeexcel/helper'
|
19
21
|
private :convert_to_ascii_if_ascii
|
@@ -640,21 +642,11 @@ class Formula < ExcelFormulaParser #:nodoc:
|
|
640
642
|
cell =~ /(\$?)([A-I]?[A-Z])(\$?)(\d+)/
|
641
643
|
|
642
644
|
col_rel = $1 == "" ? 1 : 0
|
643
|
-
col = $2
|
644
645
|
row_rel = $3 == "" ? 1 : 0
|
645
646
|
row = $4.to_i
|
646
647
|
|
647
|
-
|
648
|
-
# All your Base are belong to us.
|
649
|
-
chars = col.split(//)
|
650
|
-
expn = 0
|
651
|
-
col = 0
|
648
|
+
col = chars_to_col($2.split(//))
|
652
649
|
|
653
|
-
while (!chars.empty?)
|
654
|
-
char = chars.pop # LS char first
|
655
|
-
col += (char.ord - "A".ord + 1) * (26 ** expn)
|
656
|
-
expn += 1
|
657
|
-
end
|
658
650
|
# Convert 1-index to zero-index
|
659
651
|
row -= 1
|
660
652
|
col -= 1
|
@@ -1054,4 +1046,6 @@ if $0 ==__FILE__
|
|
1054
1046
|
end
|
1055
1047
|
end
|
1056
1048
|
|
1057
|
-
end
|
1049
|
+
end # class Formula
|
1050
|
+
|
1051
|
+
end # module Writeexcel
|
data/lib/writeexcel/helper.rb
CHANGED
@@ -40,3 +40,25 @@
|
|
40
40
|
ascii.force_encoding('UTF-16BE')
|
41
41
|
end
|
42
42
|
private :ascii_to_16be
|
43
|
+
|
44
|
+
def store_simple(record, length, *args)
|
45
|
+
header = [record, length].pack('vv')
|
46
|
+
data = args.collect { |arg| [arg].pack('v') }.join('')
|
47
|
+
|
48
|
+
append(header, data)
|
49
|
+
end
|
50
|
+
private :store_simple
|
51
|
+
|
52
|
+
# Convert base26 column string to a number.
|
53
|
+
# All your Base are belong to us.
|
54
|
+
def chars_to_col(chars)
|
55
|
+
expn = 0
|
56
|
+
col = 0
|
57
|
+
while (!chars.empty?)
|
58
|
+
char = chars.pop # LS char first
|
59
|
+
col += (char.ord - "A".ord + 1) * (26 ** expn)
|
60
|
+
expn += 1
|
61
|
+
end
|
62
|
+
col
|
63
|
+
end
|
64
|
+
private :chars_to_col
|
@@ -671,14 +671,7 @@ class OLEStorageLitePPSRoot < OLEStorageLitePPS #:nodoc:
|
|
671
671
|
iBlCnt -= 1 #the BlCnt is reduced in the count of the last sect is used for a pointer the next Bl
|
672
672
|
iBBleftover = iAll - i1stBdMax
|
673
673
|
if iAll >i1stBdMax
|
674
|
-
|
675
|
-
iBdCnt = iBBleftover / iBlCnt
|
676
|
-
iBdCnt += 1 if iBBleftover % iBlCnt > 0
|
677
|
-
iBdExL = iBdCnt / iBlCnt
|
678
|
-
iBdExL += 1 if iBdCnt % iBlCnt > 0
|
679
|
-
iBBleftover += iBdExL
|
680
|
-
break if iBdCnt == iBBleftover / iBlCnt + (iBBleftover % iBlCnt > 0 ? 1 : 0)
|
681
|
-
end
|
674
|
+
iBdCnt, iBdExL, iBBleftover = calc_idbcnt_idbexl_ibbleftover(iBBleftover, iBlCnt, iBdCnt, iBdExL)
|
682
675
|
end
|
683
676
|
iBdCnt += i1stBdL
|
684
677
|
#print "iBdCnt = iBdCnt \n"
|
@@ -784,7 +777,6 @@ class OLEStorageLitePPSRoot < OLEStorageLitePPS #:nodoc:
|
|
784
777
|
def _savePpsSetPnt(pps_array, aList, rh_info)
|
785
778
|
#1. make Array as Children-Relations
|
786
779
|
#1.1 if No Children
|
787
|
-
bpp=1
|
788
780
|
if pps_array.nil? || pps_array.size == 0
|
789
781
|
return 0xFFFFFFFF
|
790
782
|
#1.2 Just Only one
|
@@ -869,15 +861,7 @@ bpp=1
|
|
869
861
|
#0.1 Calculate BD count
|
870
862
|
iBBleftover = iAll - i1stBdMax
|
871
863
|
if iAll >i1stBdMax
|
872
|
-
|
873
|
-
iBdCnt = iBBleftover / iBlCnt
|
874
|
-
iBdCnt += 1 if iBBleftover % iBlCnt > 0
|
875
|
-
|
876
|
-
iBdExL = iBdCnt / iBlCnt
|
877
|
-
iBdExL += 1 if iBdCnt % iBlCnt > 0
|
878
|
-
iBBleftover += iBdExL
|
879
|
-
break if iBdCnt == (iBBleftover / iBlCnt + ((iBBleftover % iBlCnt) > 0 ? 1: 0))
|
880
|
-
end
|
864
|
+
iBdCnt, iBdExL, iBBleftover = calc_idbcnt_idbexl_ibbleftover(iBBleftover, iBlCnt, iBdCnt, iBdExL)
|
881
865
|
end
|
882
866
|
iAllW += iBdExL
|
883
867
|
iBdCnt += i1stBdL
|
@@ -933,6 +917,19 @@ bpp=1
|
|
933
917
|
file.write([-2].pack('V'))
|
934
918
|
end
|
935
919
|
end
|
920
|
+
|
921
|
+
def calc_idbcnt_idbexl_ibbleftover(iBBleftover, iBlCnt, iBdCnt, iBdExL)
|
922
|
+
while true
|
923
|
+
iBdCnt = iBBleftover / iBlCnt
|
924
|
+
iBdCnt += 1 if iBBleftover % iBlCnt > 0
|
925
|
+
iBdExL = iBdCnt / iBlCnt
|
926
|
+
iBdExL += 1 if iBdCnt % iBlCnt > 0
|
927
|
+
iBBleftover += iBdExL
|
928
|
+
break if iBdCnt == iBBleftover / iBlCnt + (iBBleftover % iBlCnt > 0 ? 1 : 0)
|
929
|
+
end
|
930
|
+
[iBdCnt, iBdExL, iBBleftover]
|
931
|
+
end
|
932
|
+
private :calc_idbcnt_idbexl_ibbleftover
|
936
933
|
end
|
937
934
|
|
938
935
|
class OLEStorageLitePPSFile < OLEStorageLitePPS #:nodoc:
|
data/lib/writeexcel/workbook.rb
CHANGED
@@ -70,7 +70,7 @@ class Workbook < BIFFWriter
|
|
70
70
|
super()
|
71
71
|
@file = file
|
72
72
|
@default_formats = default_formats
|
73
|
-
@parser = Formula.new(@byte_order)
|
73
|
+
@parser = Writeexcel::Formula.new(@byte_order)
|
74
74
|
@tempdir = nil
|
75
75
|
@date_1904 = false
|
76
76
|
@sheet =
|
@@ -305,7 +305,7 @@ class Workbook < BIFFWriter
|
|
305
305
|
nil, # Palette. Not used yet. See add_chart().
|
306
306
|
@sinfo,
|
307
307
|
]
|
308
|
-
worksheet = Worksheet.new(*init_data)
|
308
|
+
worksheet = Writeexcel::Worksheet.new(*init_data)
|
309
309
|
@worksheets[index] = worksheet # Store ref for iterator
|
310
310
|
@sheetnames[index] = name # Store EXTERNSHEET names
|
311
311
|
@parser.set_ext_sheets(name, index) # Store names in Formula.rb
|
@@ -322,7 +322,7 @@ class Workbook < BIFFWriter
|
|
322
322
|
# (the default) or as an embeddable object that can be inserted into a
|
323
323
|
# worksheet via the insert_chart() Worksheet method.
|
324
324
|
#
|
325
|
-
# chart = workbook.add_chart(:type => Chart::Column)
|
325
|
+
# chart = workbook.add_chart(:type => 'Chart::Column')
|
326
326
|
#
|
327
327
|
# The properties that can be set are:
|
328
328
|
#
|
@@ -334,17 +334,17 @@ class Workbook < BIFFWriter
|
|
334
334
|
#
|
335
335
|
# This is a required parameter. It defines the type of chart that will be created.
|
336
336
|
#
|
337
|
-
# chart = workbook.add_chart(:type => Chart::Line)
|
337
|
+
# chart = workbook.add_chart(:type => 'Chart::Line')
|
338
338
|
#
|
339
339
|
# The available types are:
|
340
340
|
#
|
341
|
-
# Chart::Column
|
342
|
-
# Chart::Bar
|
343
|
-
# Chart::Line
|
344
|
-
# Chart::Area
|
345
|
-
# Chart::Pie
|
346
|
-
# Chart::Scatter
|
347
|
-
# Chart::Stock
|
341
|
+
# 'Chart::Column'
|
342
|
+
# 'Chart::Bar'
|
343
|
+
# 'Chart::Line'
|
344
|
+
# 'Chart::Area'
|
345
|
+
# 'Chart::Pie'
|
346
|
+
# 'Chart::Scatter'
|
347
|
+
# 'Chart::Stock'
|
348
348
|
#
|
349
349
|
# * :name
|
350
350
|
#
|
@@ -355,7 +355,7 @@ class Workbook < BIFFWriter
|
|
355
355
|
# charts.
|
356
356
|
#
|
357
357
|
# chart = workbook.add_chart(
|
358
|
-
# :type => Chart::Line,
|
358
|
+
# :type => 'Chart::Line',
|
359
359
|
# :name => 'Results Chart'
|
360
360
|
# )
|
361
361
|
#
|
@@ -365,7 +365,7 @@ class Workbook < BIFFWriter
|
|
365
365
|
# the insert_chart() Worksheet method. It is an error to try insert a
|
366
366
|
# Chart that doesn't have this flag set.
|
367
367
|
#
|
368
|
-
# chart = workbook.add_chart(:type => Chart::Line, :embedded => 1)
|
368
|
+
# chart = workbook.add_chart(:type => 'Chart::Line', :embedded => 1)
|
369
369
|
#
|
370
370
|
# # Configure the chart.
|
371
371
|
# ...
|
@@ -407,7 +407,7 @@ class Workbook < BIFFWriter
|
|
407
407
|
@sinfo
|
408
408
|
]
|
409
409
|
|
410
|
-
chart = Chart.factory(type, *init_data)
|
410
|
+
chart = Writeexcel::Chart.factory(type, *init_data)
|
411
411
|
# If the chart isn't embedded let the workbook control it.
|
412
412
|
if !embedded
|
413
413
|
@worksheets[index] = chart # Store ref for iterator
|
@@ -451,7 +451,7 @@ class Workbook < BIFFWriter
|
|
451
451
|
@sinfo
|
452
452
|
]
|
453
453
|
|
454
|
-
chart = Chart.factory(self, type, init_data)
|
454
|
+
chart = Writeexcel::Chart.factory(self, type, init_data)
|
455
455
|
@worksheets[index] = chart # Store ref for iterator
|
456
456
|
@sheetnames[index] = name # Store EXTERNSHEET names
|
457
457
|
chart
|
@@ -577,7 +577,7 @@ class Workbook < BIFFWriter
|
|
577
577
|
def add_format(*args)
|
578
578
|
formats = {}
|
579
579
|
args.each { |arg| formats = formats.merge(arg) }
|
580
|
-
format = Format.new(@xf_index, @default_formats.merge(formats))
|
580
|
+
format = Writeexcel::Format.new(@xf_index, @default_formats.merge(formats))
|
581
581
|
@xf_index += 1
|
582
582
|
@formats.push format # Store format reference
|
583
583
|
format
|
@@ -1691,21 +1691,21 @@ class Workbook < BIFFWriter
|
|
1691
1691
|
# chart fonts are set in the FBI record of the chart.
|
1692
1692
|
|
1693
1693
|
# Index 5. Axis numbers.
|
1694
|
-
tmp_format = Format.new(
|
1694
|
+
tmp_format = Writeexcel::Format.new(
|
1695
1695
|
nil,
|
1696
1696
|
:font_only => 1
|
1697
1697
|
)
|
1698
1698
|
append(tmp_format.get_font)
|
1699
1699
|
|
1700
1700
|
# Index 6. Series names.
|
1701
|
-
tmp_format = Format.new(
|
1701
|
+
tmp_format = Writeexcel::Format.new(
|
1702
1702
|
nil,
|
1703
1703
|
:font_only => 1
|
1704
1704
|
)
|
1705
1705
|
append(tmp_format.get_font)
|
1706
1706
|
|
1707
1707
|
# Index 7. Title.
|
1708
|
-
tmp_format = Format.new(
|
1708
|
+
tmp_format = Writeexcel::Format.new(
|
1709
1709
|
nil,
|
1710
1710
|
:font_only => 1,
|
1711
1711
|
:bold => 1
|
@@ -1713,7 +1713,7 @@ class Workbook < BIFFWriter
|
|
1713
1713
|
append(tmp_format.get_font)
|
1714
1714
|
|
1715
1715
|
# Index 8. Axes.
|
1716
|
-
tmp_format = Format.new(
|
1716
|
+
tmp_format = Writeexcel::Format.new(
|
1717
1717
|
nil,
|
1718
1718
|
:font_only => 1,
|
1719
1719
|
:bold => 1
|
@@ -1721,7 +1721,7 @@ class Workbook < BIFFWriter
|
|
1721
1721
|
append(tmp_format.get_font)
|
1722
1722
|
|
1723
1723
|
# Index 9. Comments.
|
1724
|
-
tmp_format = Format.new(
|
1724
|
+
tmp_format = Writeexcel::Format.new(
|
1725
1725
|
nil,
|
1726
1726
|
:font_only => 1,
|
1727
1727
|
:font => 'Tahoma',
|
data/lib/writeexcel/worksheet.rb
CHANGED
@@ -30,6 +30,9 @@ end
|
|
30
30
|
# worksheet1 = workbook.add_worksheet
|
31
31
|
# worksheet2 = workbook.add_worksheet
|
32
32
|
#
|
33
|
+
|
34
|
+
module Writeexcel
|
35
|
+
|
33
36
|
class Worksheet < BIFFWriter
|
34
37
|
require 'writeexcel/helper'
|
35
38
|
private :convert_to_ascii_if_ascii
|
@@ -3725,17 +3728,7 @@ class Worksheet < BIFFWriter
|
|
3725
3728
|
col = $1
|
3726
3729
|
row = $2.to_i
|
3727
3730
|
|
3728
|
-
|
3729
|
-
# All your Base are belong to us.
|
3730
|
-
chars = col.split(//)
|
3731
|
-
expn = 0
|
3732
|
-
col = 0
|
3733
|
-
|
3734
|
-
while (!chars.empty?)
|
3735
|
-
char = chars.pop # LS char first
|
3736
|
-
col += (char.ord - "A".ord + 1) * (26 ** expn)
|
3737
|
-
expn += 1
|
3738
|
-
end
|
3731
|
+
col = chars_to_col($1.split(//))
|
3739
3732
|
|
3740
3733
|
# Convert 1-index to zero-index
|
3741
3734
|
row -= 1
|
@@ -4843,10 +4836,8 @@ class Worksheet < BIFFWriter
|
|
4843
4836
|
grbit = 0x0100 # Option flags
|
4844
4837
|
ixfe = 0x0F # XF index
|
4845
4838
|
|
4846
|
-
|
4847
|
-
|
4848
|
-
|
4849
|
-
append(header, data)
|
4839
|
+
store_simple(record, length,
|
4840
|
+
row, colMic, colMac, miyRw, irwMac, reserved, grbit, ixfe)
|
4850
4841
|
end
|
4851
4842
|
private :write_row_default
|
4852
4843
|
|
@@ -5013,11 +5004,8 @@ class Worksheet < BIFFWriter
|
|
5013
5004
|
zero = 0x0000
|
5014
5005
|
unknown = 0x0014
|
5015
5006
|
|
5016
|
-
|
5017
|
-
|
5018
|
-
zero, unknown, zero, color, zero].pack("vvvvvvvvvv")
|
5019
|
-
|
5020
|
-
append(header, data)
|
5007
|
+
store_simple(record, length, record, zero, zero, zero, zero,
|
5008
|
+
zero, unknown, zero, color, zero)
|
5021
5009
|
end
|
5022
5010
|
private :store_tab_color
|
5023
5011
|
|
@@ -5050,7 +5038,6 @@ class Worksheet < BIFFWriter
|
|
5050
5038
|
def store_defcol #:nodoc:
|
5051
5039
|
record = 0x0055 # Record identifier
|
5052
5040
|
length = 0x0002 # Number of bytes to follow
|
5053
|
-
|
5054
5041
|
colwidth = 0x0008 # Default column width
|
5055
5042
|
|
5056
5043
|
header = [record, length].pack("vv")
|
@@ -5319,10 +5306,7 @@ class Worksheet < BIFFWriter
|
|
5319
5306
|
|
5320
5307
|
@active_pane = pnnAct # Used in _store_selection
|
5321
5308
|
|
5322
|
-
|
5323
|
-
data = [x, y, rwtop, colleft, pnnAct].pack('vvvvv')
|
5324
|
-
|
5325
|
-
append(header, data)
|
5309
|
+
store_simple(record, length, x, y, rwtop, colleft, pnnAct)
|
5326
5310
|
end
|
5327
5311
|
private :store_panes
|
5328
5312
|
|
@@ -5549,10 +5533,7 @@ class Worksheet < BIFFWriter
|
|
5549
5533
|
rwFirst, rwLast = rwLast, rwFirst if rwFirst > rwLast
|
5550
5534
|
colFirst, colLast = colLast, colFirst if colFirst > colLast
|
5551
5535
|
|
5552
|
-
|
5553
|
-
data = [cref, rwFirst, rwLast, colFirst, colLast].pack("vvvvv")
|
5554
|
-
|
5555
|
-
append(header, data)
|
5536
|
+
store_simple(record, length, cref, rwFirst, rwLast, colFirst, colLast)
|
5556
5537
|
end
|
5557
5538
|
|
5558
5539
|
###############################################################################
|
@@ -5978,7 +5959,7 @@ class Worksheet < BIFFWriter
|
|
5978
5959
|
# The Chart must be created by the add_chart() Workbook method and it must
|
5979
5960
|
# have the embedded option set.
|
5980
5961
|
#
|
5981
|
-
# chart = workbook.add_chart(:type => Chart::Line, :embedded => 1 )
|
5962
|
+
# chart = workbook.add_chart(:type => 'Chart::Line', :embedded => 1 )
|
5982
5963
|
#
|
5983
5964
|
# # Configure the chart.
|
5984
5965
|
# ...
|
@@ -6321,10 +6302,7 @@ class Worksheet < BIFFWriter
|
|
6321
6302
|
record = 0x00A0 # Record identifier
|
6322
6303
|
length = 0x0004 # Bytes to follow
|
6323
6304
|
|
6324
|
-
|
6325
|
-
data = [@zoom, 100].pack("vv")
|
6326
|
-
|
6327
|
-
append(header, data)
|
6305
|
+
store_simple(record, length, @zoom, 100)
|
6328
6306
|
end
|
6329
6307
|
private :store_zoom
|
6330
6308
|
|
@@ -8710,7 +8688,7 @@ class Worksheet < BIFFWriter
|
|
8710
8688
|
end
|
8711
8689
|
|
8712
8690
|
# Pack the record.
|
8713
|
-
data = [flags].pack('V')
|
8691
|
+
data = [flags].pack('V') +
|
8714
8692
|
input_title +
|
8715
8693
|
error_title +
|
8716
8694
|
input_message +
|
@@ -8818,4 +8796,6 @@ class Worksheet < BIFFWriter
|
|
8818
8796
|
|
8819
8797
|
[formula.length, unused].pack('vv') + formula
|
8820
8798
|
end
|
8821
|
-
end
|
8799
|
+
end # class Worksheet
|
8800
|
+
|
8801
|
+
end # module Writeexcel
|
data/lib/writeexcel.rb
CHANGED
@@ -748,7 +748,7 @@ require 'writeexcel/debug_info'
|
|
748
748
|
# set_column(first_col, last_col, width, format, hidden, level, collapsed)
|
749
749
|
#
|
750
750
|
# The following example sets an outline level of 1 for rows 1 and 2
|
751
|
-
# (zero-indexed) and columns B to G. The parameters _height_ and
|
751
|
+
# (zero-indexed) and columns B to G. The parameters _height_ and _format_ are
|
752
752
|
# assigned default values since they are undefined:
|
753
753
|
#
|
754
754
|
# worksheet.set_row(1, nil, nil, 0, 1)
|
@@ -773,9 +773,7 @@ require 'writeexcel/debug_info'
|
|
773
773
|
# compatibility with OpenOffice.org and Gnumeric.
|
774
774
|
#
|
775
775
|
# For a more complete example see the outline.rb
|
776
|
-
#--
|
777
776
|
# and outline_collapsed.rb
|
778
|
-
#++
|
779
777
|
# programs in the examples directory of the distro.
|
780
778
|
#
|
781
779
|
# Some additional outline properties can be set via the outline_settings()
|
@@ -1060,7 +1058,7 @@ require 'writeexcel/debug_info'
|
|
1060
1058
|
# workbook = WriteExcel.new('chart.xls')
|
1061
1059
|
# worksheet = workbook.add_worksheet
|
1062
1060
|
#
|
1063
|
-
# chart = workbook.add_chart(:type => Chart::Column)
|
1061
|
+
# chart = workbook.add_chart(:type => 'Chart::Column')
|
1064
1062
|
#
|
1065
1063
|
# # Configure the chart.
|
1066
1064
|
# chart.add_series(
|
@@ -1087,16 +1085,16 @@ require 'writeexcel/debug_info'
|
|
1087
1085
|
# The Chart module isn't used directly, a chart object is created via the
|
1088
1086
|
# Workbook add_chart() method where the chart type is specified:
|
1089
1087
|
#
|
1090
|
-
# chart = workbook.add_chart(:type => Chart::Column)
|
1088
|
+
# chart = workbook.add_chart(:type => 'Chart::Column')
|
1091
1089
|
#
|
1092
1090
|
# Currently the supported chart types are:
|
1093
1091
|
#
|
1094
|
-
# * Chart::Column: Creates a column style (histogram) chart. See Column.
|
1095
|
-
# * Chart::Bar: Creates a Bar style (transposed histogram) chart. See Bar.
|
1096
|
-
# * Chart::Line: Creates a Line style chart. See Line.
|
1097
|
-
# * Chart::Area: Creates an Area (filled line) style chart. See Area.
|
1098
|
-
# * Chart::Scatter: Creates an Scatter style chart. See Scatter.
|
1099
|
-
# * Chart::Stock: Creates an Stock style chart. See Stock.
|
1092
|
+
# * 'Chart::Column': Creates a column style (histogram) chart. See Column.
|
1093
|
+
# * 'Chart::Bar': Creates a Bar style (transposed histogram) chart. See Bar.
|
1094
|
+
# * 'Chart::Line': Creates a Line style chart. See Line.
|
1095
|
+
# * 'Chart::Area': Creates an Area (filled line) style chart. See Area.
|
1096
|
+
# * 'Chart::Scatter': Creates an Scatter style chart. See Scatter.
|
1097
|
+
# * 'Chart::Stock': Creates an Stock style chart. See Stock.
|
1100
1098
|
#
|
1101
1099
|
# More chart types will be supported in time. See the "TODO" section.
|
1102
1100
|
#
|
@@ -17,7 +17,7 @@ class TC_ChartGeneric < Test::Unit::TestCase
|
|
17
17
|
def setup
|
18
18
|
io = StringIO.new
|
19
19
|
workbook = WriteExcel.new(io)
|
20
|
-
@chart = Chart.new('', 'chart', 0, 0, 0, 0, 0, 0, 0, 0)
|
20
|
+
@chart = Writeexcel::Chart.new('', 'chart', 0, 0, 0, 0, 0, 0, 0, 0)
|
21
21
|
end
|
22
22
|
|
23
23
|
def teardown
|