lib/writeexcel/charts/bar.rb in writeexcel-0.3.5 vs lib/writeexcel/charts/bar.rb in writeexcel-0.4.0

- old
+ new

@@ -1,177 +1,178 @@ -############################################################################### -# -# Bar - A writer class for Excel Bar charts. -# -# Used in conjunction with Chart. -# -# See formatting note in Chart. -# -# Copyright 2000-2010, John McNamara, jmcnamara@cpan.org -# -# original written in Perl by John McNamara -# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp -# - -require 'writeexcel/chart' - -class Chart - - # - # ==SYNOPSIS - # - # To create a simple Excel file with a Bar chart using WriteExcel: - # - # #!/usr/bin/ruby -w - # - # require 'writeexcel' - # - # workbook = WriteExcel.new('chart.xls') - # worksheet = workbook.add_worksheet - # - # chart = workbook.add_chart(:type => Chart::Bar) - # - # # Configure the chart. - # chart.add_series( - # :categories => '=Sheet1!$A$2:$A$7', - # :values => '=Sheet1!$B$2:$B$7', - # ) - # - # # Add the worksheet data the chart refers to. - # data = [ - # [ 'Category', 2, 3, 4, 5, 6, 7 ], - # [ 'Value', 1, 4, 5, 2, 1, 5 ] - # ] - # - # worksheet.write('A1', data) - # - # workbook.close - # - # ==DESCRIPTION - # - # This module implements Bar charts for WriteExcel. The chart object is - # created via the Workbook add_chart method: - # - # chart = workbook.add_chart(:type => Chart::Bar) - # - # Once the object is created it can be configured via the following methods - # that are common to all chart classes: - # - # chart.add_series - # chart.set_x_axis - # chart.set_y_axis - # chart.set_title - # - # These methods are explained in detail in Chart section of WriteExcel. - # Class specific methods or settings, if any, are explained below. - # - # ==Bar Chart Methods - # - # There aren't currently any bar chart specific methods. See the TODO - # section of Chart of Writeexcel. - # - # ==EXAMPLE - # - # Here is a complete example that demonstrates most of the available - # features when creating a chart. - # - # #!/usr/bin/ruby -w - # - # require 'writeexcel' - # - # workbook = WriteExcel.new('chart_bar.xls') - # worksheet = workbook.add_worksheet - # bold = workbook.add_format(:bold => 1) - # - # # Add the worksheet data that the charts will refer to. - # headings = [ 'Number', 'Sample 1', 'Sample 2' ] - # data = [ - # [ 2, 3, 4, 5, 6, 7 ], - # [ 1, 4, 5, 2, 1, 5 ], - # [ 3, 6, 7, 5, 4, 3 ] - # ] - # - # worksheet.write('A1', headings, bold) - # worksheet.write('A2', data) - # - # # Create a new chart object. In this case an embedded chart. - # chart = workbook.add_chart(:type => Chart::Bar, :embedded => 1) - # - # # Configure the first series. (Sample 1) - # chart.add_series( - # :name => 'Sample 1', - # :categories => '=Sheet1!$A$2:$A$7', - # :values => '=Sheet1!$B$2:$B$7', - # ) - # - # # Configure the second series. (Sample 2) - # chart.add_series( - # :name => 'Sample 2', - # :categories => '=Sheet1!$A$2:$A$7', - # :values => '=Sheet1!$C$2:$C$7', - # ) - # - # # Add a chart title and some axis labels. - # chart.set_title (:name => 'Results of sample analysis') - # chart.set_x_axis(:name => 'Test number') - # chart.set_y_axis(:name => 'Sample length (cm)') - # - # # Insert the chart into the worksheet (with an offset). - # worksheet.insert_chart('D2', chart, 25, 10) - # - # workbook.close - # - class Bar < Chart - ############################################################################### - # - # new() - # - # - def initialize(*args) # :nodoc: - super - @config[:x_axis_text] = [ 0x2D, 0x6D9, 0x5F, 0x1CC, 0x281, 0x0, 90 ] - @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ] - @config[:y_axis_text] = [ 0x078A, 0x0DFC, 0x011D, 0x9C, 0x0081, 0x0000 ] - @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ] - end - - ############################################################################### - # - # _store_chart_type() - # - # Implementation of the abstract method from the specific chart class. - # - # Write the BAR chart BIFF record. Defines a bar or column chart type. - # - def store_chart_type # :nodoc: - record = 0x1017 # Record identifier. - length = 0x0006 # Number of bytes to follow. - pcOverlap = 0x0000 # Space between bars. - pcGap = 0x0096 # Space between cats. - grbit = 0x0001 # Option flags. - - header = [record, length].pack('vv') - data = [pcOverlap].pack('v') - data += [pcGap].pack('v') - data += [grbit].pack('v') - - append(header, data) - end - - ############################################################################### - # - # _set_embedded_config_data() - # - # Override some of the default configuration data for an embedded chart. - # - def set_embedded_config_data # :nodoc: - # Set the parent configuration first. - super - - # The axis positions are reversed for a bar chart so we change the config. - @config[:x_axis_text] = [ 0x57, 0x5BC, 0xB5, 0x214, 0x281, 0x0, 90 ] - @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ] - @config[:y_axis_text] = [ 0x074A, 0x0C8F, 0x021F, 0x123, 0x81, 0x0000 ] - @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ] - end - end -end +# -*- coding: utf-8 -*- +############################################################################### +# +# Bar - A writer class for Excel Bar charts. +# +# Used in conjunction with Chart. +# +# See formatting note in Chart. +# +# Copyright 2000-2010, John McNamara, jmcnamara@cpan.org +# +# original written in Perl by John McNamara +# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp +# + +require 'writeexcel/chart' + +class Chart + + # + # ==SYNOPSIS + # + # To create a simple Excel file with a Bar chart using WriteExcel: + # + # #!/usr/bin/ruby -w + # + # require 'writeexcel' + # + # workbook = WriteExcel.new('chart.xls') + # worksheet = workbook.add_worksheet + # + # chart = workbook.add_chart(:type => Chart::Bar) + # + # # Configure the chart. + # chart.add_series( + # :categories => '=Sheet1!$A$2:$A$7', + # :values => '=Sheet1!$B$2:$B$7', + # ) + # + # # Add the worksheet data the chart refers to. + # data = [ + # [ 'Category', 2, 3, 4, 5, 6, 7 ], + # [ 'Value', 1, 4, 5, 2, 1, 5 ] + # ] + # + # worksheet.write('A1', data) + # + # workbook.close + # + # ==DESCRIPTION + # + # This module implements Bar charts for WriteExcel. The chart object is + # created via the Workbook add_chart method: + # + # chart = workbook.add_chart(:type => Chart::Bar) + # + # Once the object is created it can be configured via the following methods + # that are common to all chart classes: + # + # chart.add_series + # chart.set_x_axis + # chart.set_y_axis + # chart.set_title + # + # These methods are explained in detail in Chart section of WriteExcel. + # Class specific methods or settings, if any, are explained below. + # + # ==Bar Chart Methods + # + # There aren't currently any bar chart specific methods. See the TODO + # section of Chart of Writeexcel. + # + # ==EXAMPLE + # + # Here is a complete example that demonstrates most of the available + # features when creating a chart. + # + # #!/usr/bin/ruby -w + # + # require 'writeexcel' + # + # workbook = WriteExcel.new('chart_bar.xls') + # worksheet = workbook.add_worksheet + # bold = workbook.add_format(:bold => 1) + # + # # Add the worksheet data that the charts will refer to. + # headings = [ 'Number', 'Sample 1', 'Sample 2' ] + # data = [ + # [ 2, 3, 4, 5, 6, 7 ], + # [ 1, 4, 5, 2, 1, 5 ], + # [ 3, 6, 7, 5, 4, 3 ] + # ] + # + # worksheet.write('A1', headings, bold) + # worksheet.write('A2', data) + # + # # Create a new chart object. In this case an embedded chart. + # chart = workbook.add_chart(:type => Chart::Bar, :embedded => 1) + # + # # Configure the first series. (Sample 1) + # chart.add_series( + # :name => 'Sample 1', + # :categories => '=Sheet1!$A$2:$A$7', + # :values => '=Sheet1!$B$2:$B$7', + # ) + # + # # Configure the second series. (Sample 2) + # chart.add_series( + # :name => 'Sample 2', + # :categories => '=Sheet1!$A$2:$A$7', + # :values => '=Sheet1!$C$2:$C$7', + # ) + # + # # Add a chart title and some axis labels. + # chart.set_title (:name => 'Results of sample analysis') + # chart.set_x_axis(:name => 'Test number') + # chart.set_y_axis(:name => 'Sample length (cm)') + # + # # Insert the chart into the worksheet (with an offset). + # worksheet.insert_chart('D2', chart, 25, 10) + # + # workbook.close + # + class Bar < Chart + ############################################################################### + # + # new() + # + # + def initialize(*args) # :nodoc: + super + @config[:x_axis_text] = [ 0x2D, 0x6D9, 0x5F, 0x1CC, 0x281, 0x0, 90 ] + @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ] + @config[:y_axis_text] = [ 0x078A, 0x0DFC, 0x011D, 0x9C, 0x0081, 0x0000 ] + @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ] + end + + ############################################################################### + # + # _store_chart_type() + # + # Implementation of the abstract method from the specific chart class. + # + # Write the BAR chart BIFF record. Defines a bar or column chart type. + # + def store_chart_type # :nodoc: + record = 0x1017 # Record identifier. + length = 0x0006 # Number of bytes to follow. + pcOverlap = 0x0000 # Space between bars. + pcGap = 0x0096 # Space between cats. + grbit = 0x0001 # Option flags. + + header = [record, length].pack('vv') + data = [pcOverlap].pack('v') + data += [pcGap].pack('v') + data += [grbit].pack('v') + + append(header, data) + end + + ############################################################################### + # + # _set_embedded_config_data() + # + # Override some of the default configuration data for an embedded chart. + # + def set_embedded_config_data # :nodoc: + # Set the parent configuration first. + super + + # The axis positions are reversed for a bar chart so we change the config. + @config[:x_axis_text] = [ 0x57, 0x5BC, 0xB5, 0x214, 0x281, 0x0, 90 ] + @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ] + @config[:y_axis_text] = [ 0x074A, 0x0C8F, 0x021F, 0x123, 0x81, 0x0000 ] + @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ] + end + end +end