#!/usr/bin/env ruby # -*- coding: utf-8 -*- ####################################################################### # # Example of how to add tables to an WriteXLSX worksheet. # # Tables in Excel are use to group rows and columns of data into a single # structure that can be references in a formula or formatted collectively. # # reverse(c), March 2001, John McNamara, jmcnamara@cpan.org # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp # require 'write_xlsx' # Create a new workbook called simple.xls and add a worksheet workbook = WriteXLSX.new('tables.xlsx') worksheet1 = workbook.add_worksheet worksheet2 = workbook.add_worksheet worksheet3 = workbook.add_worksheet worksheet4 = workbook.add_worksheet worksheet5 = workbook.add_worksheet worksheet6 = workbook.add_worksheet worksheet7 = workbook.add_worksheet worksheet8 = workbook.add_worksheet worksheet9 = workbook.add_worksheet worksheet10 = workbook.add_worksheet worksheet11 = workbook.add_worksheet worksheet12 = workbook.add_worksheet currency_format = workbook.add_format(:num_format => '$#,##0') # Some sample data for the table. data = [ [ 'Apples', 10000, 5000, 8000, 6000 ], [ 'Pears', 2000, 3000, 4000, 5000 ], [ 'Bananas', 6000, 6000, 6500, 6000 ], [ 'Oranges', 500, 300, 200, 700 ] ] ############################################################################### # # Example 1. # caption = 'Default table with no data.' # Set the columns widths. worksheet1.set_column('B:G', 12) # Write the caption. worksheet1.write('B1', caption) # Add a table to the worksheet. worksheet1.add_table('B3:F7') ############################################################################### # # Example 2. # caption = 'Default table with data.'; # Set the columns widths. worksheet2.set_column('B:G', 12) # Write the caption. worksheet2.write('B1', caption) # Add a table to the worksheet. worksheet2.add_table('B3:F7', { :data => data }) ############################################################################### # # Example 3. # caption = 'Table without default autofilter.' # Set the columns widths. worksheet3.set_column('B:G', 12) # Write the caption. worksheet3.write('B1', caption) # Add a table to the worksheet. worksheet3.add_table('B3:F7', { :autofilter => 0 }) # Table data can also be written separately, as an array or individual cells. worksheet3.write_col('B4', data) ############################################################################### # # Example 4. # caption = 'Table without default header row.' # Set the columns widths. worksheet4.set_column('B:G', 12) # Write the caption. worksheet4.write('B1', caption) # Add a table to the worksheet. worksheet4.add_table('B4:F7', { :header_row => 0 }) # Table data can also be written separately, as an array or individual cells. worksheet4.write_col('B4', data) ############################################################################### # # Example 5. # caption = 'Default table with "First Column" and "Last Column" options.' # Set the columns widths. worksheet5.set_column('B:G', 12) # Write the caption. worksheet5.write('B1', caption) # Add a table to the worksheet. worksheet5.add_table('B3:F7', { :first_column => 1, :last_column => 1 }) # Table data can also be written separately, as an array or individual cells. worksheet5.write_col('B4', data) ############################################################################### # # Example 6. # caption = 'Table with banded columns but without default banded rows.'; # Set the columns widths. worksheet6.set_column('B:G', 12) # Write the caption. worksheet6.write('B1', caption) # Add a table to the worksheet. worksheet6.add_table('B3:F7', { :banded_rows => 0, :banded_columns => 1 }) # Table data can also be written separately, as an array or individual cells. worksheet6.write_col('B4', data) ############################################################################### # # Example 7. # caption = 'Table with user defined column headers'; # Set the columns widths. worksheet7.set_column('B:G', 12) # Write the caption. worksheet7.write('B1', caption) # Add a table to the worksheet. worksheet7.add_table( 'B3:F7', { :data => data, :columns => [ { :header => 'Product' }, { :header => 'Quarter 1' }, { :header => 'Quarter 2' }, { :header => 'Quarter 3' }, { :header => 'Quarter 4' } ] } ) ############################################################################### # # Example 8. # caption = 'Table with user defined column headers'; # Set the columns widths. worksheet8.set_column('B:G', 12) # Write the caption. worksheet8.write('B1', caption) # Add a table to the worksheet. worksheet8.add_table( 'B3:G7', { :data => data, :columns => [ { :header => 'Product' }, { :header => 'Quarter 1' }, { :header => 'Quarter 2' }, { :header => 'Quarter 3' }, { :header => 'Quarter 4' }, { :header => 'Year', :formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])' } ] } ) ############################################################################### # # Example 9. # caption = 'Table with totals row (but no caption or totals).'; # Set the columns widths. worksheet9.set_column('B:G', 12) # Write the caption. worksheet9.write('B1', caption) # Add a table to the worksheet. worksheet9.add_table( 'B3:G8', { :data => data, :total_row => 1, :columns => [ { :header => 'Product' }, { :header => 'Quarter 1' }, { :header => 'Quarter 2' }, { :header => 'Quarter 3' }, { :header => 'Quarter 4' }, { :header => 'Year', :formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])' } ] } ) ############################################################################### # # Example 10. # caption = 'Table with totals row with user captions and functions.'; # Set the columns widths. worksheet10.set_column('B:G', 12) # Write the caption. worksheet10.write('B1', caption) # Add a table to the worksheet. worksheet10.add_table( 'B3:G8', { :data => data, :total_row => 1, :columns => [ { :header => 'Product', :total_string => 'Totals' }, { :header => 'Quarter 1', :total_function => 'sum' }, { :header => 'Quarter 2', :total_function => 'sum' }, { :header => 'Quarter 3', :total_function => 'sum' }, { :header => 'Quarter 4', :total_function => 'sum' }, { :header => 'Year', :formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])', :total_function => 'sum' } ] } ) ############################################################################### # # Example 11. # caption = 'Table with alternative Excel style.'; # Set the columns widths. worksheet11.set_column('B:G', 12) # Write the caption. worksheet11.write('B1', caption) # Add a table to the worksheet. worksheet11.add_table( 'B3:G8', { :data => data, :style => 'Table Style Light 11', :total_row => 1, :columns => [ { :header => 'Product', :total_string => 'Totals' }, { :header => 'Quarter 1', :total_function => 'sum' }, { :header => 'Quarter 2', :total_function => 'sum' }, { :header => 'Quarter 3', :total_function => 'sum' }, { :header => 'Quarter 4', :total_function => 'sum' }, { :header => 'Year', :formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])', :total_function => 'sum' } ] } ) ############################################################################### # # Example 12. # caption = 'Table with column formats.'; # Set the columns widths. worksheet12.set_column('B:G', 12) # Write the caption. worksheet12.write('B1', caption) # Add a table to the worksheet. worksheet12.add_table( 'B3:G8', { :data => data, :total_row => 1, :columns => [ { :header => 'Product', :total_string => 'Totals' }, { :header => 'Quarter 1', :total_function => 'sum', :format => currency_format, }, { :header => 'Quarter 2', :total_function => 'sum', :format => currency_format, }, { :header => 'Quarter 3', :total_function => 'sum', :format => currency_format, }, { :header => 'Quarter 4', :total_function => 'sum', :format => currency_format, }, { :header => 'Year', :formula => '=SUM(Table8[@[Quarter 1]:[Quarter 4]])', :total_function => 'sum', :format => currency_format, } ] } ) workbook.close