1. Print today's date and date after number of days |
2. Convert all the sheets in an excel file to csv files |
3. Convert tab separated column text file to SQL format |
1. Print today's date and date after number of days |
#!/usr/bin/perl
sub gettodaydate
{
my $now = time();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($now);
$year = $year + 1900;
$mon += 1;
#print "Formated date = $mday/$mon/$year\n";
my $curdate=$mday."-".$mon."-".$year;
return $curdate;
}
sub getfuturedate
{
my $num = $_[0]; #date after $num days
my $now = time();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($now);
$year = $year + 1900;
$mon += 1;
my $secs_in_day = (3600 * 24); # seconds in hour * 24
my $num_days_hence = $now + ($num * $secs_in_day);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($num_days_hence);
$year = $year + 1900;
$mon += 1;
my $futuredate=$mday."-".$mon."-".$year;
return $futuredate;
}
$today=gettodaydate();
print "Today's date is :".$today."\n";
$futuredate = getfuturedate(90);
print "date after 90 days is :".$futuredate."\n";
|
Today's date is :18-8-2025
date after 90 days is :16-11-2025
|
2. Convert all the sheets in an excel file to csv files |
#!/usr/bin/perl
use strict;
use Spreadsheet::ParseExcel;
sub exceltocv
{
my $sourcename = shift @ARGV or die "invocation: $0 \n";
my $source_excel = new Spreadsheet::ParseExcel;
my $source_book = $source_excel->Parse($sourcename) or die "Could not open source Excel file $sourcename: $!";
my $storage_book;
foreach my $source_sheet_number (0 .. $source_book->{SheetCount}-1)
{
my $source_sheet = $source_book->{Worksheet}[$source_sheet_number];
my $outfile = $source_sheet->{Name}.".csv";
open(FHOUT, ">>:encoding(UTF-8)", $outfile) || die "Can't open UTF-8 encoded $outfile $!";
print "--------- SHEET:", $source_sheet->{Name}, "\n";
next unless defined $source_sheet->{MaxRow};
next unless $source_sheet->{MinRow} <= $source_sheet->{MaxRow};
next unless defined $source_sheet->{MaxCol};
next unless $source_sheet->{MinCol} <= $source_sheet->{MaxCol};
foreach my $row_index ($source_sheet->{MinRow} .. $source_sheet->{MaxRow})
{
foreach my $col_index ($source_sheet->{MinCol} .. $source_sheet->{MaxCol})
{
my $source_cell = $source_sheet->{Cells}[$row_index][$col_index];
if ($source_cell)
{
print "( $row_index , $col_index ) =>", $source_cell->Value, "\t";
my $cellval = $source_cell->Value;
$cellval =~ s/^\s+|\s+$//g;
#print $cellval, "\t";
print FHOUT $cellval,;
if($col_index ne $source_sheet->{MaxCol})
{
print FHOUT "\t";
}
}
}
if($row_index ne $source_sheet->{MaxRow})
{
print "\n";
print FHOUT "\n";
}
}
close(FHOUT);
}
}
exceltocv();
print "done!\n";
|
3. Convert tab separated column text file to SQL format |
#!/usr/bin/perl
# convert tab separated column file into sql format
#
# usage : convtxtfiletosqlformat.pl infile, tablename, outfile
sub convtxtfiletosqlformat
{
$infile = $_[0];
$tablename = $_[1];
$outfile = $_[2];
open(IFH, "<:encoding(UTF-8)", $infile) || die "Can't open UTF-8 encoded $infile $!";
open(OFH, ">>:encoding(UTF-8)", $outfile) || die "Can't open UTF-8 encoded $outfile $!";
while()
{
$content = "insert into $tablename values ";
$content = $content."(";
if (/^\s*$/)
{
next;
}
chomp($_);
@fields = split(/[\t]/,$_);
$size = @fields;
if($size)
{
$count = 1;
foreach (@fields)
{
$field = $_;
chomp($field);
if ($field eq "null")
{
if($size eq $count)
{
$content = $content."null),";
}
else
{
$content = $content."null,";
}
}
else
{
if($size eq $count)
{
$content = $content."'".$field."');";
}
else
{
$content = $content."'".$field."',";
}
}
$count = $count + 1;
}
}
print OFH "$content\n";
}
close(IFH);
close(OFH);
}
|
Text file
---------
null One 1
null Two 1
null Three 1
null Four 1
null Five 1
null Six 1
null Seven 1
null Eight 1
null Nine 1
null Ten 1
null Eleven 1
null Twelve 1
Output SQL file
---------------
insert into class values (null,'One','1');
insert into class values (null,'Two','1');
insert into class values (null,'Three','1');
insert into class values (null,'Four','1');
insert into class values (null,'Five','1');
insert into class values (null,'Six','1');
insert into class values (null,'Seven','1');
insert into class values (null,'Eight','1');
insert into class values (null,'Nine','1');
insert into class values (null,'Ten','1');
insert into class values (null,'Eleven','1');
insert into class values (null,'Twelve','1');
|
|