El siguiente script de Perl puede convertir un archivo CSV a un archivo XLS
el problema es que necesito instalar en la máquina Linux del cliente muchos módulos Perl
para ejecutar este script Perl, y en realidad no puedo porque la máquina Linux es la máquina del cliente (no se permite instalar módulos)
Así que necesito encontrar alguna otra alternativa para este script Perl
El primer cliente tiene la máquina Linux Red-Hat versión 5.X
Y quiero encontrar algunos scripts bash / ksh / sh / awk que puedan hacer el trabajo de la misma manera que el script perl
así que quiero encontrar otra alternativa que convierta archivos CSV a XLS
Por favor, ¿cómo encontrar este script? u otro consejo para convertir CSV a XLS en una máquina Linux
#!/usr/bin/perl -w
###############################################################################
#
# Example of how to use the WriteExcel module
#
# Simple program to convert a CSV comma-separated value file to an Excel file.
# This is more or less an non-op since Excel can read CSV files.
# The program uses Text::CSV_XS to parse the CSV.
#
# Usage: csv2xls.pl file.csv newfile.xls
#
#
# NOTE: This is only a simple conversion utility for illustrative purposes.
# For converting a CSV or Tab separated or any other type of delimited
# text file to Excel I recommend the more rigorous csv2xls program that is
# part of H.Merijn Brand's Text::CSV_XS module distro.
#
# See the examples/csv2xls link here:
# L<http://search.cpan.org/~hmbrand/Text-CSV_XS/MANIFEST>
#
# reverse('©'), March 2001, John McNamara, [email protected]
#
use strict;
use Spreadsheet::WriteExcel;
use Text::CSV_XS;
# Check for valid number of arguments
if ( ( $#ARGV < 1 ) || ( $#ARGV > 2 ) ) {
die("Usage: csv2xls csvfile.txt newfile.xls\n");
}
# Open the Comma Separated Variable file
open( CSVFILE, $ARGV[0] ) or die "$ARGV[0]: $!";
# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new( $ARGV[1] );
my $worksheet = $workbook->add_worksheet();
# Create a new CSV parsing object
my $csv = Text::CSV_XS->new;
# Row and column are zero indexed
my $row = 0;
while (<CSVFILE>) {
if ( $csv->parse($_) ) {
my @Fld = $csv->fields;
my $col = 0;
foreach my $token (@Fld) {
$worksheet->write( $row, $col, $token );
$col++;
}
$row++;
} else {
my $err = $csv->error_input;
print "Text::CSV_XS parse() failed on argument: ", $err, "\n";
}
}
Respuestas:
Para convertir automáticamente archivos CSV a XLS / XLSX, también puede usar ssconvert (que viene con Gnumeric) o unoconv (que usa LibreOffice).
Ejemplo de SSConvert
Donde la primera
ssconvert
llamada crea un archivo MS Excel 2007/2010 y la segunda un Excel 2007 de la vieja escuela.Puede consultar los archivos a través de
file
:Puede enumerar todos los formatos de archivo de salida compatibles a través de:
Ejemplo de Unoconv
que crea example.xls, que es un archivo Excel 97/2000 / XP.
Verificar por archivo:
Puede enumerar todos los formatos de archivo compatibles a través de:
fuente
soffice --convert-to xlsx:"Calc MS Excel 2007 XML" filename.csv --headless
es bastante útil también.