#!/usr/local/bin/perl
use Tk;
# Main Window
my $mw = new MainWindow;
$mw->Frame(-background => 'red')->pack(-ipadx =>50, -side => "left", -
+fill => "y");
#Making a text area
my $txt = $mw -> Scrolled('Text',-width => 150, height => 40, -scrollb
+ars=>'e', -font => "fixed 8 bold" ) -> pack ();
$txt->insert('end', "");
#Declare that there is a menu
my $mbar = $mw -> Menu();
$mw -> configure(-menu => $mbar);
#The Main Buttons
my $file = $mbar -> cascade(-label=>"File", -underline=>0, -tearoff =>
+ 0);
my $open = $mbar -> cascade(-label=>"Open", -underline=>0, -tearoff =>
+ 0);
my $tool= $mbar -> cascade(-label =>"Tools", -underline=>0, -tearoff =
+> 0);
my $parser = $mbar -> cascade(-label =>"RL ", -underline=>0, -tearoff
+=> 0);
my $help = $mbar -> cascade(-label =>"Help", -underline=>0, -tearoff =
+> 0);
## File Menu ##
$file -> command(-label => "Home", -underline=>0,
-command=> \&home );
$file -> command(-label => "Check ", -underline=>0,
-command=> \&define );
$file -> checkbutton(-label =>"faults", -underline => 0,
-command => \&faults);
$file -> separator();
$file -> command(-label =>"Exit", -underline => 1,
-command => sub { exit } );
##Open Menu##
$open->command( -label => 'Open', -underline => 0, -command => \&f_ope
+n );
$open->command( -label => 'Save', -underline => 0, -command => \&f_sav
+e );
$open->separator;
$open->command( -label => 'Exit', -underline => 1, -command => sub{
+exit} );
## Tools Menu ##
$tool -> command(-label => "Ne", -underline=>0,
-command=> \&nwplan );
$tool -> command(-label => " ", -underline=>0,
-command=> \&optimize );
$tool -> separator();
## Parse Menu ##
$parser -> command(-label => "P", -underline=>0,
-command=> \&parse );
## Help Menu ##
$help -> command(-label => "About", -underline=>0,
-command=> \&help );
MainLoop;
sub help {
my ($opt) = @_;
$mw->messageBox(-message=>"This function is not available yet");
}
Mainloop;
sub f_open {
my $filename = $mw->getOpenFile( -title => 'Open File:',
-defaultextension => '.xls', -initialdir => '.' );
warn "Opened $filename\n";
open(MYFILE,$filename);
# Text::Iconv is not really required.
# This can be any object with the convert method. Or nothing.
use Spreadsheet::ParseExcel;
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($filename);
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
for my $worksheet ( $workbook->worksheet(1) ) {
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for my $row ( $row_min .. 20 ) {
for my $col ( $col_min .. $col_max ) {
my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;
print "Row, Col = ($row, $col)\n";
print "Value = ", $cell->value(), "\n";
print "\n";
$txt->insert('end',"$row:$col----$worksheet->{Cells
+}[$row][$col]->{Val}\n");
}
}
}
}
Another thing i noticed is that this script seems to run fine on smaller files (worksheets with less rows) ....
It displays all data in text area as i expect but acts weirdly for larger files |