#!/usr/bin/perl -w
# (C) Jochen Puchalla 2005
use Spreadsheet::WriteExcel;
$table = 0;
# The input record separator is defined by Perl global
# variable $/. It can be anything, including multiple
# characters. Normally it is "\n", newline. Here, we
# say there is no record separator, so the whole file
# is read as one long record, newlines included.
# undef $/;
# Suppose this program was invoked with the command
# hystsep ax.dat bx.dat cx.dat
# Then builtin list @ARGV would contain three elments
# ('ax.dat', 'bx.dat', 'cx.dat')
# These could be accessed as $ARGV[0] $ARGV[1] $ARGV[2]
foreach $file (@ARGV)
{
if (! open(INPUT,"<$file") )
{
print STDERR "Can't open input file $file\n";
next;
}
$filecore=$file;
$filecore =~ s/.dat$//g;
# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new("$filecore.xls");
# Add some worksheets
my $summary = $workbook->addworksheet("Summary");
my $header = $workbook->addworksheet("Header");
while ($line=)
{
############### summary part ###############
if ($line =~ /HysteresisResult/)
{
$row=0;
while ( ($line=) =~ /^\D/) #handle text lines
{
$line =~ s/[\n\r]$//g; #remove newline at end of string
@values = split(/\s/, $line);
$summary->write($row, 0, $values[0]);
$summary->write($row, 1, $values[1]);
$summary->write($row, 2, $values[2]);
$summary->write($row, 3, $values[3]);
$summary->write($row, 4, $values[4]);
$summary->write($row, 5, $values[5]);
$summary->write($row, 6, $values[6]);
$summary->write($row, 7, $values[7]);
$summary->write($row, 8, $values[8]);
$row++;
}
#handle first data line:
@values = split(/\s/, $line);
$summary->write($row, 0, $values[0]);
$summary->write($row, 1, $values[1]);
$summary->write($row, 2, $values[2]);
$summary->write($row, 3, $values[3]);
$summary->write($row, 4, $values[4]);
$summary->write($row, 5, $values[5]);
$summary->write($row, 6, $values[6]);
$summary->write($row, 7, $values[7]);
$summary->write($row, 8, $values[8]);
$row++;
while ( ($line=) =~ /^\d/) #handle data lines
{
@values = split(/\s/, $line);
$summary->write($row, 0, $values[0]);
$summary->write($row, 1, $values[1]);
$summary->write($row, 2, $values[2]);
$summary->write($row, 3, $values[3]);
$summary->write($row, 4, $values[4]);
$summary->write($row, 5, $values[5]);
$summary->write($row, 6, $values[6]);
$summary->write($row, 7, $values[7]);
$summary->write($row, 8, $values[8]);
$row++;
}
}
############### data header ###############
if ($line =~ /DynamicHysteresis/)
{
$row=0;
while ( ($line=) =~ /^[A-Z]/i ) #handle text lines
{
$line =~ s/[\n\r]$//g; #remove newline at end of string
@values = split(/\s/, $line);
$header->write($row, 0, $values[0]);
$header->write($row, 1, $values[1]);
$header->write($row, 2, $values[2]);
$header->write($row, 3, $values[3]);
$header->write($row, 4, $values[4]);
$header->write($row, 5, $values[5]);
$header->write($row, 6, $values[6]);
$header->write($row, 7, $values[7]);
$header->write($row, 8, $values[8]);
$row++;
}
}
############### data part ###############
if ($line =~ /Table/)
{
$table++;
$row=0;
$col=10;
my $worksheet = $workbook->addworksheet("Table$table");
while ( ($line=) =~ /^[A-Z]/i ) #handle text lines
{
$line =~ s/[\n\r]$//g; #remove newline at end of string
@values = split(/\s/, $line);
if ($line =~ /Time\[s\]/) {$row=0; $col=0;} #last text line
$worksheet->write($row, $col, $values[0]);
$worksheet->write($row, $col+1, $values[1]);
$worksheet->write($row, $col+2, $values[2]);
$worksheet->write($row, $col+3, $values[3]);
$worksheet->write($row, $col+4, $values[4]);
$worksheet->write($row, $col+5, $values[5]);
$worksheet->write($row, $col+6, $values[6]);
$worksheet->write($row, $col+7, $values[7]);
$worksheet->write($row, $col+8, $values[8]);
$row++;
}
$row=1;
while ($line=)
{
if ($line =~ /^\d/) #if line starts with digit, import it
{
@values = split(/\s/, $line);
$worksheet->write($row, 0, $values[0]);
$worksheet->write($row, 1, $values[1]);
$worksheet->write($row, 2, $values[2]);
$worksheet->write($row, 3, $values[3]);
$worksheet->write($row, 4, $values[4]);
$worksheet->write($row, 5, $values[5]);
$worksheet->write($row, 6, $values[6]);
$worksheet->write($row, 7, $values[7]);
$worksheet->write($row, 8, $values[8]);
$row++;
}
else { last; } #else break loop
}
}
}
close INPUT;
# close OUTPUT;
}
exit(0);