#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'rubygems' require 'write_xlsx' workbook = WriteXLSX.new('comments2.xlsx') text_wrap = workbook.add_format( :text_wrap => 1, :valign => 'top' ) 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 # Variables that we will use in each example. cell_text = '' comment = '' ############################################################################### # # Example 1. Demonstrates a simple cell comments without formatting. # comments. # # Set up some formatting. worksheet1.set_column( 'C:C', 25 ) worksheet1.set_row( 2, 50 ) worksheet1.set_row( 5, 50 ) # Simple ascii string. cell_text = 'Hold the mouse over this cell to see the comment.' comment = 'This is a comment.' worksheet1.write( 'C3', cell_text, text_wrap ) worksheet1.write_comment( 'C3', comment ) cell_text = 'This is a UTF-8 string.' comment = '☺' worksheet1.write( 'C6', cell_text, text_wrap ) worksheet1.write_comment( 'C6', comment ) ############################################################################### # # Example 2. Demonstrates visible and hidden comments. # # Set up some formatting. worksheet2.set_column( 'C:C', 25 ) worksheet2.set_row( 2, 50 ) worksheet2.set_row( 5, 50 ) cell_text = 'This cell comment is visible.' comment = 'Hello.' worksheet2.write( 'C3', cell_text, text_wrap ) worksheet2.write_comment( 'C3', comment, :visible => 1 ) cell_text = "This cell comment isn't visible (the default)." comment = 'Hello.' worksheet2.write( 'C6', cell_text, text_wrap ) worksheet2.write_comment( 'C6', comment ) ############################################################################### # # Example 3. Demonstrates visible and hidden comments set at the worksheet # level. # # Set up some formatting. worksheet3.set_column( 'C:C', 25 ) worksheet3.set_row( 2, 50 ) worksheet3.set_row( 5, 50 ) worksheet3.set_row( 8, 50 ) # Make all comments on the worksheet visible. worksheet3.show_comments cell_text = 'This cell comment is visible, explicitly.' comment = 'Hello.' worksheet3.write( 'C3', cell_text, text_wrap ) worksheet3.write_comment( 'C3', comment, :visible => 1 ) cell_text = 'This cell comment is also visible because we used show_comments().' comment = 'Hello.' worksheet3.write( 'C6', cell_text, text_wrap ) worksheet3.write_comment( 'C6', comment ) cell_text = 'However, we can still override it locally.' comment = 'Hello.' worksheet3.write( 'C9', cell_text, text_wrap ) worksheet3.write_comment( 'C9', comment, :visible => 0 ) ############################################################################### # # Example 4. Demonstrates changes to the comment box dimensions. # # Set up some formatting. worksheet4.set_column( 'C:C', 25 ) worksheet4.set_row( 2, 50 ) worksheet4.set_row( 5, 50 ) worksheet4.set_row( 8, 50 ) worksheet4.set_row( 15, 50 ) worksheet4.show_comments cell_text = 'This cell comment is default size.' comment = 'Hello.' worksheet4.write( 'C3', cell_text, text_wrap ) worksheet4.write_comment( 'C3', comment ) cell_text = 'This cell comment is twice as wide.' comment = 'Hello.' worksheet4.write( 'C6', cell_text, text_wrap ) worksheet4.write_comment( 'C6', comment, :x_scale => 2 ) cell_text = 'This cell comment is twice as high.' comment = 'Hello.' worksheet4.write( 'C9', cell_text, text_wrap ) worksheet4.write_comment( 'C9', comment, :y_scale => 2 ) cell_text = 'This cell comment is scaled in both directions.' comment = 'Hello.' worksheet4.write( 'C16', cell_text, text_wrap ) worksheet4.write_comment( 'C16', comment, :x_scale => 1.2, :y_scale => 0.8 ) cell_text = 'This cell comment has width and height specified in pixels.' comment = 'Hello.' worksheet4.write( 'C19', cell_text, text_wrap ) worksheet4.write_comment( 'C19', comment, :width => 200, :height => 20 ) ############################################################################### # # Example 5. Demonstrates changes to the cell comment position. # worksheet5.set_column( 'C:C', 25 ) worksheet5.set_row( 2, 50 ) worksheet5.set_row( 5, 50 ) worksheet5.set_row( 8, 50 ) worksheet5.set_row( 11, 50 ) worksheet5.show_comments cell_text = 'This cell comment is in the default position.' comment = 'Hello.' worksheet5.write( 'C3', cell_text, text_wrap ) worksheet5.write_comment( 'C3', comment ) cell_text = 'This cell comment has been moved to another cell.' comment = 'Hello.' worksheet5.write( 'C6', cell_text, text_wrap ) worksheet5.write_comment( 'C6', comment, :start_cell => 'E4' ) cell_text = 'This cell comment has been moved to another cell.' comment = 'Hello.' worksheet5.write( 'C9', cell_text, text_wrap ) worksheet5.write_comment( 'C9', comment, :start_row => 8, :start_col => 4 ) cell_text = 'This cell comment has been shifted within its default cell.' comment = 'Hello.' worksheet5.write( 'C12', cell_text, text_wrap ) worksheet5.write_comment( 'C12', comment, :x_offset => 30, :y_offset => 12 ) ############################################################################### # # Example 6. Demonstrates changes to the comment background colour. # worksheet6.set_column( 'C:C', 25 ) worksheet6.set_row( 2, 50 ) worksheet6.set_row( 5, 50 ) worksheet6.set_row( 8, 50 ) worksheet6.show_comments cell_text = 'This cell comment has a different colour.' comment = 'Hello.' worksheet6.write( 'C3', cell_text, text_wrap ) worksheet6.write_comment( 'C3', comment, :color => 'green' ) cell_text = 'This cell comment has the default colour.' comment = 'Hello.' worksheet6.write( 'C6', cell_text, text_wrap ) worksheet6.write_comment( 'C6', comment ) cell_text = 'This cell comment has a different colour.' comment = 'Hello.' worksheet6.write( 'C9', cell_text, text_wrap ) worksheet6.write_comment( 'C9', comment, :color => 0x35 ) ############################################################################### # # Example 7. Demonstrates how to set the cell comment author. # worksheet7.set_column( 'C:C', 30 ) worksheet7.set_row( 2, 50 ) worksheet7.set_row( 5, 50 ) worksheet7.set_row( 8, 50 ) author = '' cell = 'C3' cell_text = "Move the mouse over this cell and you will see 'Cell commented " + "by #{author}' (blank) in the status bar at the bottom" comment = 'Hello.' worksheet7.write( cell, cell_text, text_wrap ) worksheet7.write_comment( cell, comment ) author = 'Ruby' cell = 'C6' cell_text = "Move the mouse over this cell and you will see 'Cell commented " + "by #{author}' in the status bar at the bottom" comment = 'Hello.' worksheet7.write( cell, cell_text, text_wrap ) worksheet7.write_comment( cell, comment, :author => author ) author = '€' cell = 'C9' cell_text = "Move the mouse over this cell and you will see 'Cell commented " + "by #{author}' in the status bar at the bottom" comment = 'Hello.' worksheet7.write( cell, cell_text, text_wrap ) worksheet7.write_comment( cell, comment, :author => author ) ############################################################################### # # Example 8. Demonstrates the need to explicitly set the row height. # # Set up some formatting. worksheet8.set_column( 'C:C', 25 ) worksheet8.set_row( 2, 80 ) worksheet8.show_comments cell_text = 'The height of this row has been adjusted explicitly using ' + 'set_row(). The size of the comment box is adjusted ' + 'accordingly by Excel::Writer::XLSX.' comment = 'Hello.' worksheet8.write( 'C3', cell_text, text_wrap ) worksheet8.write_comment( 'C3', comment ) cell_text = 'The height of this row has been adjusted by Excel due to the ' + 'text wrap property being set. Unfortunately this means that ' + 'the height of the row is unknown to Excel::Writer::XLSX at ' + "run time and thus the comment box is stretched as well.\n\n" + 'Use set_row() to specify the row height explicitly to avoid ' + 'this problem.' comment = 'Hello.' worksheet8.write( 'C6', cell_text, text_wrap ) worksheet8.write_comment( 'C6', comment ) workbook.close