use strict;
use warnings;
use File::Spec::Functions qw(rel2abs);
use Win32::OLE qw(in with);
use Win32::OLE::Variant;
use Win32::OLE::Const 'Microsoft Excel';
$Win32::OLE::Warn = 3; # die on errors...
print "$0 - Wandle Excel-Datei in PDF um ...\n\n";
# Dateiname der Excel-Datei holen und kompletten Pfad ergänzen
my $filename = shift;
$filename = rel2abs($filename);
print "Ausgangsdatei $filename\n";
# PDF-Dateinamen festlegen
my $pdffilename = $filename;
$pdffilename =~ s/\.xls.*/\.pdf/i;
# Wenn PDF-Datei schon existiert, dann löschen
if ( -e $pdffilename ) {
print "PDF-Datei $pdffilename existiert schon ... wird geloescht.\
+n";
unlink($pdffilename);
}
else {
print "PDF-Datei $pdffilename\n";
}
# Open document
# Create new MSExcel object and load constants
my $MSExcel = Win32::OLE->new( 'Excel.Application', 'Quit' )
or die "Could not load MS Excel";
my $excel = Win32::OLE::Const->Load($MSExcel);
my $Book = $MSExcel->Workbooks->Open( { FileName => "$filename" } );
# Excel-Funktion "Speichern unter ..." aufrufen
$Book->ExportAsFixedFormat(
{
'Type' => xlTypePDF,
'Filename' => "$pdffilename",
'Quality' => xlQualityStandard,
'IncludeDocProperties' => "True",
'IgnorePrintAreas' => "False",
'OpenAfterPublish' => "False",
}
);
# Close document
$Book->Close( { SaveChanges => $excel->{xlDoNotSaveChanges} } );
if ( -e $pdffilename ) {
print "PDF-Datei wurde erzeugt. Programmende.\n";
}
else {
print "Fehler: Datei $pdffilename wurde nicht erzeugt. Programmend
+e.\n";
}
exit(0);
|