Viewing file: comments2.pl (10.01 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl -w
############################################################################### # # This example demonstrates writing cell comments. # # A cell comment is indicated in Excel by a small red triangle in the upper # right-hand corner of the cell. # # Each of the worksheets demonstrates different features of cell comments. # # reverse('©'), November 2005, John McNamara, jmcnamara@cpan.org #
use strict; use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new("comments2.xls"); my $text_wrap = $workbook->add_format(text_wrap => 1, valign => 'top'); my $worksheet1 = $workbook->add_worksheet(); my $worksheet2 = $workbook->add_worksheet(); my $worksheet3 = $workbook->add_worksheet(); my $worksheet4 = $workbook->add_worksheet(); my $worksheet5 = $workbook->add_worksheet(); my $worksheet6 = $workbook->add_worksheet(); my $worksheet7 = $workbook->add_worksheet(); my $worksheet8 = $workbook->add_worksheet();
# Variables that we will use in each example. my $cell_text = ''; my $comment = '';
############################################################################### # # Example 1. Demonstrates a simple cell comment without formatting and Unicode # comments encoded as UTF-16 and as UTF-8. #
# 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);
# UTF-16 string. $cell_text = 'This is a UTF-16 comment.';
$comment = pack "n", 0x263a;
$worksheet1->write ('C6', $cell_text, $text_wrap); $worksheet1->write_comment('C6', $comment, encoding => 1);
# UTF-8 string in perl 5.8. if ($] >= 5.008) {
$worksheet1->set_row(8, 50); $cell_text = 'This is a UTF-8 string.'; $comment = chr 0x263a;
$worksheet1->write ('C9', $cell_text, $text_wrap); $worksheet1->write_comment('C9', $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); $worksheet7->set_row(11, 50);
my $author = ''; my $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 = 'Perl'; $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 = pack "n", 0x20AC; # UTF-16 Euro $cell = 'C9'; $cell_text = "Move the mouse over this cell and you will see 'Cell commented ". "by Euro' in the status bar at the bottom";
$comment = 'Hello.';
$worksheet7->write ($cell, $cell_text, $text_wrap); $worksheet7->write_comment($cell, $comment, author => $author, author_encoding => 1 );
# UTF-8 string in perl 5.8. if ($] >= 5.008) { $author = chr 0x20AC; $cell = 'C12'; $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 WriteExcel.';
$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 WriteExcel 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);
__END__
|