I used Perl the last time I had to deal with Excel in a *nix environment.
You can take this script as a starting point if Perl is installed and if you're able to obtain the ParseExcel module (just replace the semicolon with a tab):
Code:
#!/usr/bin/perl -w
# convert an excel file to a .csv file
use strict;
use Spreadsheet::ParseExcel;
if ($#ARGV != 1) {
print "\nUsage: excel2csv.pl <workbook_name> <worksheet_name>\n";
exit;
}
my $workbook_name = $ARGV[0];
my $worksheet_name = $ARGV[1];
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse( "$workbook_name" );
my $worksheet = $workbook->worksheet( "$worksheet_name" );
if ( !defined $workbook ) {
die $parser-error(), ".\n";
}
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
my $output = '';
for my $row ( $row_min .. $row_max ) {
for my $col ( $col_min .. $col_max ) {
my $cell = $worksheet->get_cell( $row, $col );
if ( $cell ) {
my $cell_value = $cell->value();
$cell_value =~ s/\;/,/g;
$output = $output . $cell_value . ';';
}
else {
$output = $output . ';';
}
}
print "$output\n";
$output = '';
}
Hi,
Can any one please help me in converting a tab delimited file in .csv file.
Records in my file are similar to mentioned below:
DET 001 0201 AC032508970 01478E1X8
DET 002 0202 AC032508971 01478E1X8
Could any one please suggest me what approach would be more suitable for this or if... (5 Replies)
Hi,
We have a couple of ms excel files in unix server.We need convert the excel files to files TAB limiter format file with using unix script.
Could you please advise on this (2 Replies)
Hello Gurus,
I have a text file containing nearly 12,000 tab delimited characters with 4000 rows. If the file size is small, excel can convert the text into coloumns. However, the file that I have is very big. Can some body help me in solving this problem?
The input file example,
... (6 Replies)
I have a text file that made using text editor in Ubuntu. However the text file is not being recognized as space or tab delimited, the formatting seems to be messed up. How can I convert the text file into tab delimited format? (3 Replies)
Dear Users , Need to convert delimited text files in UNix server to an Excel file and move the excel file to Windows environment. Am trying to automate the whole process. Can anyone share the ideas,if they have done similar ones before...Thanks -Meera (1 Reply)
Hello,
I have a text file with space and tab (mixed) delimited file and need to convert into CSV.
# cat test.txt
/dev/rmt/tsmmt32 HP Ultrium 6-SCSI J3LZ 50:03:08:c0:02:72:c0:b5 F00272C0B5 0/0/6/1/1.145.17.255.0.0.0 /dev/rmt/c102t0d0BEST
/dev/rmt/tsmmt37 ... (6 Replies)
Hi, I have a rquirement in unix as below .
I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column.
ex:
Input Text file:
1|A|apple
2|B|bottle
excel file to be generated as output as... (9 Replies)
So I have a file1.txt that is tab delimited:
e.g.
FIELD1 FIELD2 FIELD3 FIELD4 FIELD5
9545641 123 "Neighbor and Labrador,Canada" 54895 'CANADA'
9456465 456 "Neighbor and Labrador,Canada" 54893 'CANADA'
8746512 789 "Neighbor and... (11 Replies)
Discussion started by: dan139
11 Replies
LEARN ABOUT DEBIAN
spreadsheet::parseexcel::workbook
Spreadsheet::ParseExcel::Workbook(3pm) User Contributed Perl Documentation Spreadsheet::ParseExcel::Workbook(3pm)NAME
Spreadsheet::ParseExcel::Workbook - A class for Workbooks.
SYNOPSIS
See the documentation for Spreadsheet::ParseExcel.
DESCRIPTION
This module is used in conjunction with Spreadsheet::ParseExcel. See the documentation for Spreadsheet::ParseExcel.
Methods
The following Workbook methods are available:
$workbook->worksheets()
$workbook->worksheet()
$workbook->worksheet_count()
$workbook->get_filename()
$workbook->get_print_areas()
$workbook->get_print_titles()
$workbook->using_1904_date()
worksheets()
The "worksheets()" method returns an array of Worksheet objects. This was most commonly used to iterate over the worksheets in a workbook:
for my $worksheet ( $workbook->worksheets() ) {
...
}
worksheet()
The "worksheet()" method returns a single "Worksheet" object using either its name or index:
$worksheet = $workbook->worksheet('Sheet1');
$worksheet = $workbook->worksheet(0);
Returns "undef" if the sheet name or index doesn't exist.
worksheet_count()
The "worksheet_count()" method returns the number of Woksheet objects in the Workbook.
my $worksheet_count = $workbook->worksheet_count();
get_filename()
The "get_filename()" method returns the name of the Excel file of "undef" if the data was read from a filehandle rather than a file.
my $filename = $workbook->get_filename();
get_print_areas()
The "get_print_areas()" method returns an array ref of print areas.
my $print_areas = $workbook->get_print_areas();
Each print area is as follows:
[ $start_row, $start_col, $end_row, $end_col ]
Returns undef if there are no print areas.
get_print_titles()
The "get_print_titles()" method returns an array ref of print title hash refs.
my $print_titles = $workbook->get_print_titles();
Each print title array ref is as follows:
{
Row => [ $start_row, $end_row ],
Column => [ $start_col, $end_col ],
}
Returns undef if there are no print titles.
using_1904_date()
The "using_1904_date()" method returns true if the Excel file is using the 1904 date epoch instead of the 1900 epoch.
my $using_1904_date = $workbook->using_1904_date();
The Windows version of Excel generally uses the 1900 epoch while the Mac version of Excel generally uses the 1904 epoch.
Returns 0 if the 1900 epoch is in use.
AUTHOR
Maintainer 0.40+: John McNamara jmcnamara@cpan.org
Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
Original author: Kawai Takanori kwitknr@cpan.org
COPYRIGHT
Copyright (c) 2009-2010 John McNamara
Copyright (c) 2006-2008 Gabor Szabo
Copyright (c) 2000-2006 Kawai Takanori
All rights reserved.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
perl v5.10.1 2010-09-17 Spreadsheet::ParseExcel::Workbook(3pm)