#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

#######################################################################
#
# Example of formatting using the WriteXLSX gem
#
# This example shows how to use a conditional numerical format
# with colours to indicate if a share price has gone up or down.
#
# reverse(c), March 2001, John McNamara, jmcnamara@cpan.org
# convert to ruby by Hideo NAKAMURA, nakamura.hideo@gmail.com
#

require 'write_xlsx'

# Create a new workbook called simple.xls and add a worksheet
workbook  = WriteXLSX.new('stock.xlsx')
worksheet = workbook.add_worksheet

# Set the column width for columns 1, 2, 3 and 4
worksheet.set_column(0, 3, 15)

# Create a format for the column headings
header = workbook.add_format
header.set_bold
header.set_size(12)
header.set_color('blue')

# Create a format for the stock price
f_price = workbook.add_format
f_price.set_align('left')
f_price.set_num_format('$0.00')

# Create a format for the stock volume
f_volume = workbook.add_format
f_volume.set_align('left')
f_volume.set_num_format('#,##0')

# Create a format for the price change. This is an example of a conditional
# format. The number is formatted as a percentage. If it is positive it is
# formatted in green, if it is negative it is formatted in red and if it is
# zero it is formatted as the default font colour (in this case black).
# Note: the [Green] format produces an unappealing lime green. Try
# [Color 10] instead for a dark green.
#
f_change = workbook.add_format
f_change.set_align('left')
f_change.set_num_format('[Green]0.0%;[Red]-0.0%;0.0%')

# Write out the data
worksheet.write(0, 0, 'Company', header)
worksheet.write(0, 1, 'Price',   header)
worksheet.write(0, 2, 'Volume',  header)
worksheet.write(0, 3, 'Change',  header)

worksheet.write(1, 0, 'Damage Inc.')
worksheet.write(1, 1, 30.25, f_price)       # $30.25
worksheet.write(1, 2, 1234567, f_volume)    # 1,234,567
worksheet.write(1, 3, 0.085, f_change)      # 8.5% in green

worksheet.write(2, 0, 'Dump Corp.')
worksheet.write(2, 1, 1.56, f_price)        # $1.56
worksheet.write(2, 2, 7564, f_volume)       # 7,564
worksheet.write(2, 3, -0.015, f_change)     # -1.5% in red

worksheet.write(3, 0, 'Rev Ltd.')
worksheet.write(3, 1, 0.13, f_price)        # $0.13
worksheet.write(3, 2, 321, f_volume)        # 321
worksheet.write(3, 3, 0, f_change)          # 0 in the font color (black)

workbook.close
