writeexcel 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. data/.gitattributes +1 -1
  2. data/.gitignore +24 -24
  3. data/README.rdoc +34 -55
  4. data/VERSION +1 -1
  5. data/charts/chartex.rb +316 -316
  6. data/charts/demo1.rb +46 -46
  7. data/charts/demo2.rb +65 -65
  8. data/charts/demo3.rb +117 -117
  9. data/charts/demo4.rb +119 -119
  10. data/charts/demo5.rb +48 -48
  11. data/examples/a_simple.rb +43 -43
  12. data/examples/autofilter.rb +265 -265
  13. data/examples/bigfile.rb +30 -30
  14. data/examples/chart_area.rb +121 -121
  15. data/examples/chart_bar.rb +120 -120
  16. data/examples/chart_column.rb +120 -120
  17. data/examples/chart_line.rb +120 -120
  18. data/examples/chart_pie.rb +108 -108
  19. data/examples/chart_scatter.rb +121 -121
  20. data/examples/chart_stock.rb +148 -148
  21. data/examples/chess.rb +142 -142
  22. data/examples/colors.rb +129 -129
  23. data/examples/comments1.rb +27 -27
  24. data/examples/comments2.rb +352 -352
  25. data/examples/copyformat.rb +52 -52
  26. data/examples/data_validate.rb +279 -279
  27. data/examples/date_time.rb +87 -87
  28. data/examples/defined_name.rb +32 -32
  29. data/examples/demo.rb +124 -124
  30. data/examples/diag_border.rb +36 -36
  31. data/examples/formats.rb +490 -490
  32. data/examples/formula_result.rb +30 -30
  33. data/examples/header.rb +137 -137
  34. data/examples/hide_sheet.rb +29 -29
  35. data/examples/hyperlink.rb +43 -43
  36. data/examples/images.rb +63 -63
  37. data/examples/indent.rb +31 -31
  38. data/examples/merge1.rb +40 -40
  39. data/examples/merge2.rb +45 -45
  40. data/examples/merge3.rb +66 -66
  41. data/examples/merge4.rb +83 -83
  42. data/examples/merge5.rb +80 -80
  43. data/examples/merge6.rb +67 -67
  44. data/examples/outline.rb +255 -255
  45. data/examples/outline_collapsed.rb +209 -209
  46. data/examples/panes.rb +113 -113
  47. data/examples/properties.rb +34 -34
  48. data/examples/properties_jp.rb +33 -33
  49. data/examples/protection.rb +47 -47
  50. data/examples/regions.rb +53 -53
  51. data/examples/repeat.rb +43 -43
  52. data/examples/right_to_left.rb +27 -27
  53. data/examples/row_wrap.rb +53 -53
  54. data/examples/stats.rb +74 -74
  55. data/examples/stocks.rb +81 -81
  56. data/examples/tab_colors.rb +31 -31
  57. data/examples/utf8.rb +15 -15
  58. data/examples/write_arrays.rb +83 -83
  59. data/lib/writeexcel/biffwriter.rb +232 -232
  60. data/lib/writeexcel/caller_info.rb +12 -12
  61. data/lib/writeexcel/chart.rb +2190 -2177
  62. data/lib/writeexcel/charts/area.rb +154 -154
  63. data/lib/writeexcel/charts/bar.rb +177 -177
  64. data/lib/writeexcel/charts/column.rb +156 -156
  65. data/lib/writeexcel/charts/external.rb +66 -66
  66. data/lib/writeexcel/charts/line.rb +154 -154
  67. data/lib/writeexcel/charts/pie.rb +169 -169
  68. data/lib/writeexcel/charts/scatter.rb +192 -192
  69. data/lib/writeexcel/charts/stock.rb +213 -213
  70. data/lib/writeexcel/colors.rb +64 -64
  71. data/lib/writeexcel/compatibility.rb +0 -255
  72. data/lib/writeexcel/debug_info.rb +37 -33
  73. data/lib/writeexcel/excelformulaparser.rb +587 -587
  74. data/lib/writeexcel/format.rb +13 -4
  75. data/lib/writeexcel/formula.rb +26 -9
  76. data/lib/writeexcel/helper.rb +68 -64
  77. data/lib/writeexcel/olewriter.rb +311 -311
  78. data/lib/writeexcel/properties.rb +242 -240
  79. data/lib/writeexcel/storage_lite.rb +984 -978
  80. data/lib/writeexcel/workbook.rb +3210 -3192
  81. data/lib/writeexcel/worksheet.rb +143 -51
  82. data/lib/writeexcel/write_file.rb +44 -40
  83. data/lib/writeexcel.rb +1159 -1159
  84. data/test/helper.rb +31 -28
  85. data/test/perl_output/README +31 -31
  86. data/test/test_00_IEEE_double.rb +13 -13
  87. data/test/test_01_add_worksheet.rb +10 -10
  88. data/test/test_02_merge_formats.rb +53 -53
  89. data/test/test_04_dimensions.rb +392 -392
  90. data/test/test_05_rows.rb +179 -179
  91. data/test/test_06_extsst.rb +77 -77
  92. data/test/test_11_date_time.rb +479 -479
  93. data/test/test_12_date_only.rb +501 -501
  94. data/test/test_13_date_seconds.rb +481 -481
  95. data/test/test_21_escher.rb +637 -637
  96. data/test/test_22_mso_drawing_group.rb +745 -745
  97. data/test/test_23_note.rb +73 -73
  98. data/test/test_24_txo.rb +75 -75
  99. data/test/test_25_position_object.rb +84 -84
  100. data/test/test_26_autofilter.rb +314 -314
  101. data/test/test_27_autofilter.rb +131 -131
  102. data/test/test_28_autofilter.rb +161 -161
  103. data/test/test_29_process_jpg.rb +683 -683
  104. data/test/test_30_validation_dval.rb +77 -77
  105. data/test/test_31_validation_dv_strings.rb +126 -126
  106. data/test/test_32_validation_dv_formula.rb +206 -206
  107. data/test/test_40_property_types.rb +188 -188
  108. data/test/test_41_properties.rb +235 -235
  109. data/test/test_42_set_properties.rb +437 -437
  110. data/test/test_50_name_stored.rb +299 -299
  111. data/test/test_51_name_print_area.rb +357 -357
  112. data/test/test_52_name_print_titles.rb +454 -454
  113. data/test/test_53_autofilter.rb +203 -203
  114. data/test/test_60_chart_generic.rb +578 -578
  115. data/test/test_61_chart_subclasses.rb +95 -95
  116. data/test/test_62_chart_formats.rb +272 -272
  117. data/test/test_63_chart_area_formats.rb +649 -649
  118. data/test/test_biff.rb +75 -75
  119. data/test/test_compatibility.rb +12 -627
  120. data/test/test_example_match.rb +3144 -3144
  121. data/test/test_formula.rb +61 -61
  122. data/test/test_ole.rb +106 -106
  123. data/test/test_storage_lite.rb +125 -125
  124. data/test/test_workbook.rb +139 -139
  125. data/test/test_worksheet.rb +110 -110
  126. data/utils/add_magic_comment.rb +80 -80
  127. data/writeexcel.gemspec +4 -6
  128. data/writeexcel.rdoc +58 -15
  129. metadata +9 -6
  130. data/test/test_new_encoding.rb +0 -205
data/charts/chartex.rb CHANGED
@@ -1,316 +1,316 @@
1
- #!/usr/bin/ruby -w
2
- # -*- coding: utf-8 -*-
3
-
4
- #######################################################################
5
- #
6
- # chartex - A utility to extract charts from an Excel file for
7
- # insertion into a Spreadsheet::WriteExcel file.
8
- #
9
- # reverse('ゥ'), September 2007, John McNamara, jmcnamara@cpan.org
10
- #
11
- # original written in Perl by John McNamara
12
- # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
13
- #
14
- # Documentation after __END__
15
- #
16
-
17
- require 'writeexcel'
18
-
19
- class Chartex
20
- attr_reader :file
21
-
22
- def initialize(file = nil)
23
- @file = file
24
- @sheetnames = Array.new
25
- @exrefs = Array.new
26
- @buf = StringIO.new
27
- end
28
-
29
- def set_file(file)
30
- @file = file
31
- end
32
-
33
- def get_workbook(file = nil)
34
- file ||= @file
35
- ole = OLEStorageLite.new(file)
36
- book97 = 'Workbook'.unpack('C*').pack('v*')
37
- workbook = ole.getPpsSearch([book97], 1, 1)[0]
38
- @buf.write(workbook.data)
39
- @buf.rewind
40
- workbook
41
- end
42
- end
43
-
44
- # main
45
-
46
- if $0 == __FILE__
47
-
48
- end
49
-
50
- =begin
51
- my $man = 0;
52
- my $help = 0;
53
- my $in_chart = 0;
54
- my $chart_name = 'chart';
55
- my $chart_index = 1;
56
- my $sheet_index = -1;
57
- my @sheetnames;
58
- my @exrefs;
59
- my $depth_count = 0;
60
- my $max_font = 0;
61
-
62
- #
63
- # Do the Getopt and Pod::Usage routines.
64
- #
65
- GetOptions(
66
- 'help|?' => \$help,
67
- 'man' => \$man,
68
- 'chart=s' => \$chart_name,
69
- ) or pod2usage(2);
70
-
71
- pod2usage(1) if $help;
72
- pod2usage(-verbose => 2) if $man;
73
-
74
-
75
- # From the Pod::Usage pod:
76
- # If no arguments were given, then allow STDIN to be used only
77
- # if it's not connected to a terminal (otherwise print usage)
78
- pod2usage() if @ARGV == 0 && -t STDIN;
79
-
80
-
81
-
82
-
83
- # Check that the file can be opened because OLE::Storage_Lite won't tell us.
84
- # Possible race condition here. Could fix with latest OLE::Storage_Lite. TODO.
85
- #
86
- my $file = $ARGV[0];
87
-
88
- open TMP, $file or die "Couldn't open $file. $!\n";
89
- close TMP;
90
-
91
- my $ole = OLE::Storage_Lite->new($file);
92
- my $book97 = pack 'v*', unpack 'C*', 'Workbook';
93
- my $workbook = ($ole->getPpsSearch([$book97], 1, 1))[0];
94
-
95
- die "Couldn't find Excel97 data in file $file.\n" unless $workbook;
96
-
97
-
98
- # Write the data to a file so that we can access it with read().
99
- my $tmpfile = IO::File->new_tmpfile();
100
- binmode $tmpfile;
101
-
102
- my $biff = $workbook->{Data};
103
- print {$tmpfile} $biff;
104
- seek $tmpfile, 0, 0;
105
-
106
-
107
-
108
- my $header;
109
- my $data;
110
-
111
- # Read the file record by record and look for a chart BOF record.
112
- #
113
- while (read $tmpfile, $header, 4) {
114
-
115
- my ($record, $length) = unpack "vv", $header;
116
- next unless $record;
117
-
118
- read $tmpfile, $data, $length;
119
-
120
- # BOUNDSHEET
121
- if ($record == 0x0085) {
122
- push @sheetnames, substr $data, 8;
123
- }
124
-
125
- # EXTERNSHEET
126
- if ($record == 0x0017) {
127
- my $count = unpack 'v', $data;
128
-
129
- for my $i (1 .. $count) {
130
- my @tmp = unpack 'vvv', substr($data, 2 +6*($i-1));
131
- push @exrefs, [@tmp];
132
- }
133
-
134
- }
135
-
136
- # BOF
137
- if ($record == 0x0809) {
138
- my $type = unpack 'xx v', $data;
139
-
140
- if ($type == 0x0020) {
141
- my $filename = sprintf "%s%02d.bin", $chart_name, $chart_index;
142
- open CHART, ">$filename" or die "Couldn't open $filename: $!";
143
- binmode CHART;
144
-
145
- my $sheet_name = $sheetnames[$sheet_index];
146
- $sheet_name .= ' embedded' if $depth_count;
147
-
148
- printf "\nExtracting \%s\ to %s", $sheet_name, $filename;
149
- $in_chart = 1;
150
- $chart_index++;
151
- }
152
- $depth_count++;
153
- }
154
-
155
-
156
- # FBI, Chart fonts
157
- if ($record == 0x1060) {
158
-
159
- my $index = substr $data, 8, 2, '';
160
- $index = unpack 'v', $index;
161
-
162
- # Ignore the inbuilt fonts.
163
- if ($index >= 5) {
164
- $max_font = $index if $index > $max_font;
165
-
166
- # Shift index past S::WE fonts
167
- $index += 2;
168
- }
169
-
170
- $data .= pack 'v', $index;
171
- }
172
-
173
- # FONTX, Chart fonts
174
- if ($record == 0x1026) {
175
-
176
- my $index = unpack 'v', $data;
177
-
178
- # Ignore the inbuilt fonts.
179
- if ($index >= 5) {
180
- $max_font = $index if $index > $max_font;
181
-
182
- # Shift index past S::WE fonts
183
- $index += 2;
184
- }
185
-
186
- $data = pack 'v', $index;
187
- }
188
-
189
-
190
-
191
- if ($in_chart) {
192
- print CHART $header, $data;
193
- }
194
-
195
-
196
- # EOF
197
- if ($record == 0x000A) {
198
- $in_chart = 0;
199
- $depth_count--;
200
- $sheet_index++ if $depth_count == 0;
201
- ;
202
- }
203
- }
204
-
205
-
206
- if ($chart_index > 1) {
207
- print "\n\n";
208
- print "Add the following near the start of your program\n";
209
- print "and change the variable names if required.\n\n";
210
- }
211
- else {
212
- print "\nNo charts found in workbook\n";
213
- }
214
-
215
- for my $aref (@exrefs) {
216
- my $sheet1 = $sheetnames[$aref->[1]];
217
- my $sheet2 = $sheetnames[$aref->[2]];
218
-
219
- my $range;
220
-
221
- if ($sheet1 ne $sheet2) {
222
- $range = $sheet1 . ":" . $sheet2;
223
- }
224
- else {
225
- $range = $sheet1;
226
- }
227
-
228
- $range = "'$range'" if $range =~ /[^\w:]/;
229
-
230
- print " \$worksheet->store_formula('=$range!A1');\n";
231
- }
232
-
233
- print "\n";
234
-
235
- for my $i (5 .. $max_font) {
236
-
237
- printf " my \$chart_font_%d = \$workbook->add_format(font_only => 1);\n",
238
- $i -4;
239
-
240
- }
241
-
242
-
243
-
244
-
245
-
246
- __END__
247
-
248
-
249
- =head1 NAME
250
-
251
- chartex - A utility to extract charts from an Excel file for insertion into a Spreadsheet::WriteExcel file.
252
-
253
- =head1 DESCRIPTION
254
-
255
- This program is used for extracting one or more charts from an Excel file in binary format. The charts can then be included in a C<Spreadsheet::WriteExcel> file.
256
-
257
- See the C<add_chart_ext()> section of the Spreadsheet::WriteExcel documentation for more details.
258
-
259
-
260
- =head1 SYNOPSIS
261
-
262
- chartex [--chartname --help --man] file.xls
263
-
264
- Options:
265
- --chartname -c The root name for the extracted charts,
266
- defaults to "chart".
267
-
268
-
269
- =head1 OPTIONS
270
-
271
- =over 4
272
-
273
- =item B<--chartname or -c>
274
-
275
- This sets the root name for the extracted charts, defaults to "chart". For example:
276
-
277
- $ chartex file.xls
278
-
279
- Extracting "Chart1" to chart01.bin
280
-
281
-
282
- $ chartex -c mychart file.xls
283
-
284
- Extracting "Chart1" to mychart01.bin
285
-
286
- =item B<--help or -h>
287
-
288
- Print a brief help message and exits.
289
-
290
-
291
- =item B<--man or -m>
292
-
293
- Prints the manual page and exits.
294
-
295
- =back
296
-
297
-
298
- =head1 AUTHOR
299
-
300
- John McNamara jmcnamara@cpan.org
301
-
302
-
303
- =head1 VERSION
304
-
305
- Version 0.02.
306
-
307
-
308
- =head1 COPYRIGHT
309
-
310
- ゥ MMV, John McNamara.
311
-
312
- All Rights Reserved. This program is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
313
-
314
-
315
- =cut
316
- =end
1
+ #!/usr/bin/ruby -w
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #######################################################################
5
+ #
6
+ # chartex - A utility to extract charts from an Excel file for
7
+ # insertion into a WriteExcel file.
8
+ #
9
+ # reverse('ゥ'), September 2007, John McNamara, jmcnamara@cpan.org
10
+ #
11
+ # original written in Perl by John McNamara
12
+ # converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
13
+ #
14
+ # Documentation after __END__
15
+ #
16
+
17
+ require 'writeexcel'
18
+
19
+ class Chartex
20
+ attr_reader :file
21
+
22
+ def initialize(file = nil)
23
+ @file = file
24
+ @sheetnames = Array.new
25
+ @exrefs = Array.new
26
+ @buf = StringIO.new
27
+ end
28
+
29
+ def set_file(file)
30
+ @file = file
31
+ end
32
+
33
+ def get_workbook(file = nil)
34
+ file ||= @file
35
+ ole = OLEStorageLite.new(file)
36
+ book97 = 'Workbook'.unpack('C*').pack('v*')
37
+ workbook = ole.getPpsSearch([book97], 1, 1)[0]
38
+ @buf.write(workbook.data)
39
+ @buf.rewind
40
+ workbook
41
+ end
42
+ end
43
+
44
+ # main
45
+
46
+ if $0 == __FILE__
47
+
48
+ end
49
+
50
+ =begin
51
+ my $man = 0;
52
+ my $help = 0;
53
+ my $in_chart = 0;
54
+ my $chart_name = 'chart';
55
+ my $chart_index = 1;
56
+ my $sheet_index = -1;
57
+ my @sheetnames;
58
+ my @exrefs;
59
+ my $depth_count = 0;
60
+ my $max_font = 0;
61
+
62
+ #
63
+ # Do the Getopt and Pod::Usage routines.
64
+ #
65
+ GetOptions(
66
+ 'help|?' => \$help,
67
+ 'man' => \$man,
68
+ 'chart=s' => \$chart_name,
69
+ ) or pod2usage(2);
70
+
71
+ pod2usage(1) if $help;
72
+ pod2usage(-verbose => 2) if $man;
73
+
74
+
75
+ # From the Pod::Usage pod:
76
+ # If no arguments were given, then allow STDIN to be used only
77
+ # if it's not connected to a terminal (otherwise print usage)
78
+ pod2usage() if @ARGV == 0 && -t STDIN;
79
+
80
+
81
+
82
+
83
+ # Check that the file can be opened because OLE::Storage_Lite won't tell us.
84
+ # Possible race condition here. Could fix with latest OLE::Storage_Lite. TODO.
85
+ #
86
+ my $file = $ARGV[0];
87
+
88
+ open TMP, $file or die "Couldn't open $file. $!\n";
89
+ close TMP;
90
+
91
+ my $ole = OLE::Storage_Lite->new($file);
92
+ my $book97 = pack 'v*', unpack 'C*', 'Workbook';
93
+ my $workbook = ($ole->getPpsSearch([$book97], 1, 1))[0];
94
+
95
+ die "Couldn't find Excel97 data in file $file.\n" unless $workbook;
96
+
97
+
98
+ # Write the data to a file so that we can access it with read().
99
+ my $tmpfile = IO::File->new_tmpfile();
100
+ binmode $tmpfile;
101
+
102
+ my $biff = $workbook->{Data};
103
+ print {$tmpfile} $biff;
104
+ seek $tmpfile, 0, 0;
105
+
106
+
107
+
108
+ my $header;
109
+ my $data;
110
+
111
+ # Read the file record by record and look for a chart BOF record.
112
+ #
113
+ while (read $tmpfile, $header, 4) {
114
+
115
+ my ($record, $length) = unpack "vv", $header;
116
+ next unless $record;
117
+
118
+ read $tmpfile, $data, $length;
119
+
120
+ # BOUNDSHEET
121
+ if ($record == 0x0085) {
122
+ push @sheetnames, substr $data, 8;
123
+ }
124
+
125
+ # EXTERNSHEET
126
+ if ($record == 0x0017) {
127
+ my $count = unpack 'v', $data;
128
+
129
+ for my $i (1 .. $count) {
130
+ my @tmp = unpack 'vvv', substr($data, 2 +6*($i-1));
131
+ push @exrefs, [@tmp];
132
+ }
133
+
134
+ }
135
+
136
+ # BOF
137
+ if ($record == 0x0809) {
138
+ my $type = unpack 'xx v', $data;
139
+
140
+ if ($type == 0x0020) {
141
+ my $filename = sprintf "%s%02d.bin", $chart_name, $chart_index;
142
+ open CHART, ">$filename" or die "Couldn't open $filename: $!";
143
+ binmode CHART;
144
+
145
+ my $sheet_name = $sheetnames[$sheet_index];
146
+ $sheet_name .= ' embedded' if $depth_count;
147
+
148
+ printf "\nExtracting \%s\ to %s", $sheet_name, $filename;
149
+ $in_chart = 1;
150
+ $chart_index++;
151
+ }
152
+ $depth_count++;
153
+ }
154
+
155
+
156
+ # FBI, Chart fonts
157
+ if ($record == 0x1060) {
158
+
159
+ my $index = substr $data, 8, 2, '';
160
+ $index = unpack 'v', $index;
161
+
162
+ # Ignore the inbuilt fonts.
163
+ if ($index >= 5) {
164
+ $max_font = $index if $index > $max_font;
165
+
166
+ # Shift index past S::WE fonts
167
+ $index += 2;
168
+ }
169
+
170
+ $data .= pack 'v', $index;
171
+ }
172
+
173
+ # FONTX, Chart fonts
174
+ if ($record == 0x1026) {
175
+
176
+ my $index = unpack 'v', $data;
177
+
178
+ # Ignore the inbuilt fonts.
179
+ if ($index >= 5) {
180
+ $max_font = $index if $index > $max_font;
181
+
182
+ # Shift index past S::WE fonts
183
+ $index += 2;
184
+ }
185
+
186
+ $data = pack 'v', $index;
187
+ }
188
+
189
+
190
+
191
+ if ($in_chart) {
192
+ print CHART $header, $data;
193
+ }
194
+
195
+
196
+ # EOF
197
+ if ($record == 0x000A) {
198
+ $in_chart = 0;
199
+ $depth_count--;
200
+ $sheet_index++ if $depth_count == 0;
201
+ ;
202
+ }
203
+ }
204
+
205
+
206
+ if ($chart_index > 1) {
207
+ print "\n\n";
208
+ print "Add the following near the start of your program\n";
209
+ print "and change the variable names if required.\n\n";
210
+ }
211
+ else {
212
+ print "\nNo charts found in workbook\n";
213
+ }
214
+
215
+ for my $aref (@exrefs) {
216
+ my $sheet1 = $sheetnames[$aref->[1]];
217
+ my $sheet2 = $sheetnames[$aref->[2]];
218
+
219
+ my $range;
220
+
221
+ if ($sheet1 ne $sheet2) {
222
+ $range = $sheet1 . ":" . $sheet2;
223
+ }
224
+ else {
225
+ $range = $sheet1;
226
+ }
227
+
228
+ $range = "'$range'" if $range =~ /[^\w:]/;
229
+
230
+ print " \$worksheet->store_formula('=$range!A1');\n";
231
+ }
232
+
233
+ print "\n";
234
+
235
+ for my $i (5 .. $max_font) {
236
+
237
+ printf " my \$chart_font_%d = \$workbook->add_format(font_only => 1);\n",
238
+ $i -4;
239
+
240
+ }
241
+
242
+
243
+
244
+
245
+
246
+ __END__
247
+
248
+
249
+ =head1 NAME
250
+
251
+ chartex - A utility to extract charts from an Excel file for insertion into a Spreadsheet::WriteExcel file.
252
+
253
+ =head1 DESCRIPTION
254
+
255
+ This program is used for extracting one or more charts from an Excel file in binary format. The charts can then be included in a C<Spreadsheet::WriteExcel> file.
256
+
257
+ See the C<add_chart_ext()> section of the Spreadsheet::WriteExcel documentation for more details.
258
+
259
+
260
+ =head1 SYNOPSIS
261
+
262
+ chartex [--chartname --help --man] file.xls
263
+
264
+ Options:
265
+ --chartname -c The root name for the extracted charts,
266
+ defaults to "chart".
267
+
268
+
269
+ =head1 OPTIONS
270
+
271
+ =over 4
272
+
273
+ =item B<--chartname or -c>
274
+
275
+ This sets the root name for the extracted charts, defaults to "chart". For example:
276
+
277
+ $ chartex file.xls
278
+
279
+ Extracting "Chart1" to chart01.bin
280
+
281
+
282
+ $ chartex -c mychart file.xls
283
+
284
+ Extracting "Chart1" to mychart01.bin
285
+
286
+ =item B<--help or -h>
287
+
288
+ Print a brief help message and exits.
289
+
290
+
291
+ =item B<--man or -m>
292
+
293
+ Prints the manual page and exits.
294
+
295
+ =back
296
+
297
+
298
+ =head1 AUTHOR
299
+
300
+ John McNamara jmcnamara@cpan.org
301
+
302
+
303
+ =head1 VERSION
304
+
305
+ Version 0.02.
306
+
307
+
308
+ =head1 COPYRIGHT
309
+
310
+ ゥ MMV, John McNamara.
311
+
312
+ All Rights Reserved. This program is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
313
+
314
+
315
+ =cut
316
+ =end