#!/usr/bin/env ruby # -*- coding: utf-8 -*- ####################################################################### # # Example of how to add sparklines to an Excel::Writer::XLSX file. # # Sparklines are small charts that fit in a single cell and are # used to show trends in data. This example shows the majority of # options that can be applied to sparklines. # # reverse ('(c)'), November 2011, John McNamara, jmcnamara@cpan.org # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp # require 'write_xlsx' workbook = WriteXLSX.new('sparklines2.xlsx') worksheet1 = workbook.add_worksheet worksheet2 = workbook.add_worksheet bold = workbook.add_format(:bold => 1) row = 1 # Set the columns widths to make the output clearer. worksheet1.set_column('A:A', 14) worksheet1.set_column('B:B', 50) worksheet1.zoom = 150 # Headings. worksheet1.write('A1', 'Sparkline', bold) worksheet1.write('B1', 'Description', bold) ############################################################################### # str = 'A default "line" sparkline.' worksheet1.add_sparkline( { :location => 'A2', :range => 'Sheet2!A1:J1' } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'A default "column" sparkline.' worksheet1.add_sparkline( { :location => 'A3', :range => 'Sheet2!A2:J2', :type => 'column' } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'A default "win/loss" sparkline.' worksheet1.add_sparkline( { :location => 'A4', :range => 'Sheet2!A3:J3', :type => 'win_loss' } ) worksheet1.write(row, 1, str) row += 2 ############################################################################### # str = 'Line with markers.' worksheet1.add_sparkline( { :location => 'A6', :range => 'Sheet2!A1:J1', :markers => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Line with high and low points.' worksheet1.add_sparkline( { :location => 'A7', :range => 'Sheet2!A1:J1', :high_point => 1, :low_point => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Line with first and last point markers.' worksheet1.add_sparkline( { :location => 'A8', :range => 'Sheet2!A1:J1', :first_point => 1, :last_point => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Line with negative point markers.' worksheet1.add_sparkline( { :location => 'A9', :range => 'Sheet2!A1:J1', :negative_points => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Line with axis.' worksheet1.add_sparkline( { :location => 'A10', :range => 'Sheet2!A1:J1', :axis => 1 } ) worksheet1.write(row, 1, str) row += 2 ############################################################################### # str = 'Column with default style (1).' worksheet1.add_sparkline( { :location => 'A12', :range => 'Sheet2!A2:J2', :type => 'column' } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with style 2.' worksheet1.add_sparkline( { :location => 'A13', :range => 'Sheet2!A2:J2', :type => 'column', :style => 2 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with style 3.' worksheet1.add_sparkline( { :location => 'A14', :range => 'Sheet2!A2:J2', :type => 'column', :style => 3 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with style 4.' worksheet1.add_sparkline( { :location => 'A15', :range => 'Sheet2!A2:J2', :type => 'column', :style => 4 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with style 5.' worksheet1.add_sparkline( { :location => 'A16', :range => 'Sheet2!A2:J2', :type => 'column', :style => 5 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with style 6.' worksheet1.add_sparkline( { :location => 'A17', :range => 'Sheet2!A2:J2', :type => 'column', :style => 6 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Column with a user defined colour.' worksheet1.add_sparkline( { :location => 'A18', :range => 'Sheet2!A2:J2', :type => 'column', :series_color => '#E965E0' } ) worksheet1.write(row, 1, str) row += 2 ############################################################################### # str = 'A win/loss sparkline.' worksheet1.add_sparkline( { :location => 'A20', :range => 'Sheet2!A3:J3', :type => 'win_loss' } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'A win/loss sparkline with negative points highlighted.' worksheet1.add_sparkline( { :location => 'A21', :range => 'Sheet2!A3:J3', :type => 'win_loss', :negative_points => 1 } ) worksheet1.write(row, 1, str) row += 2 ############################################################################### # str = 'A left to right column (the default).' worksheet1.add_sparkline( { :location => 'A23', :range => 'Sheet2!A4:J4', :type => 'column', :style => 20 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'A right to left column.' worksheet1.add_sparkline( { :location => 'A24', :range => 'Sheet2!A4:J4', :type => 'column', :style => 20, :reverse => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # str = 'Sparkline and text in one cell.' worksheet1.add_sparkline( { :location => 'A25', :range => 'Sheet2!A4:J4', :type => 'column', :style => 20 } ) worksheet1.write(row, 0, 'Growth') worksheet1.write(row, 1, str) row += 2 ############################################################################### # str = 'A grouped sparkline. Changes are applied to all three.' worksheet1.add_sparkline( { :location => [ 'A27', 'A28', 'A29' ], :range => [ 'Sheet2!A5:J5', 'Sheet2!A6:J6', 'Sheet2!A7:J7' ], :markers => 1 } ) worksheet1.write(row, 1, str) row += 1 ############################################################################### # # Create a second worksheet with data to plot. # worksheet2.set_column('A:J', 11) data = [ # Simple line data. [ -2, 2, 3, -1, 0, -2, 3, 2, 1, 0 ], # Simple column data. [ 30, 20, 33, 20, 15, 5, 5, 15, 10, 15 ], # Simple win/loss data. [ 1, 1, -1, -1, 1, -1, 1, 1, 1, -1 ], # Unbalanced histogram. [ 5, 6, 7, 10, 15, 20, 30, 50, 70, 100 ], # Data for the grouped sparkline example. [ -2, 2, 3, -1, 0, -2, 3, 2, 1, 0 ], [ 3, -1, 0, -2, 3, 2, 1, 0, 2, 1 ], [ 0, -2, 3, 2, 1, 0, 1, 2, 3, 1 ] ] # Write the sample data to the worksheet. worksheet2.write_col('A1', data) workbook.close