#!/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, nakamura.hideo@gmail.com # 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 worksheet13 = 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 no Excel style.' # 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, style: 'None', 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(Table12[@[Quarter 1]:[Quarter 4]])', total_function: 'sum' } ] } ) ############################################################################### # # Example 13. # caption = 'Table with column formats.' # Set the columns widths. worksheet13.set_column('B:G', 12) # Write the caption. worksheet13.write('B1', caption) # Add a table to the worksheet. worksheet13.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