#!/usr/local/bin/perl use Spreadsheet::XLSX; use Spreadsheet::XLSX::Utility2007; use Tk; my $mw = new MainWindow; my $mbar = $mw -> Menu(); $mw -> configure(-menu => $mbar); my $file = $mbar -> cascade(-label=>"File", -underline=>0, -tearoff => 0); $file -> checkbutton(-label =>"Open", -underline => 0, -command => [\&menuopenClicked, "Open"]); $file -> command(-label =>"Save", -underline => 0, -command => [\&menusavedClicked, "Save"]); $file -> separator(); $file -> command(-label =>"Exit", -underline => 1, -command => sub { exit } ); MainLoop; sub menuopenClicked { my $typesopen = [ ['Excel 2007 files', '.xls'], ['All files', '*'],]; my $mainfilepath = $mw->getOpenFile(-filetypes => $typesopen, -defaultextension => '.xls'); my $regions = '1-A1:G:110' ; my $rotate = 1; open($mainfilepath, "> $mainfilepath"); my $filename = $mainfilepath; close $mainfilepath; my $csvtxt = Spreadsheet::XLSX::Utility2007::xls2csv($filename, $regions, $rotate); sub menusavedClicked { my $typesaved = [ ['Excel 2007 files', '.xlsx'], ['All files', '*'],]; my $saved = $mw->getSaveFile(-filetypes => $typessaved, -defaultextension => '.csv'); open($saved, "> $saved") || die "Can't create <$saved> for output!\n"; print ($saved $csvtxt) if $saved; close $saved; }} #### open($mainfilepath, "> $mainfilepath");