Le script Perl suivant peut convertir un fichier CSV en fichier XLS
le problème est que je dois installer sur la machine Linux du client de nombreux modules Perl
afin d'exécuter ce script Perl, et en fait je ne peux pas parce que la machine Linux est la machine client (ne pas autoriser l'installation de modules)
J'ai donc besoin de trouver une autre alternative pour ce script Perl
Le premier client a la version 5.X de la machine Red Hat Hat
Et je veux trouver des scripts bash / ksh / sh / awk qui peuvent faire le même travail que le script perl
donc je veux trouver une autre alternative qui convertit CSV en fichier XLS
S'il vous plaît des conseils sur la façon de trouver ce script? ou d'autres conseils pour convertir CSV en XLS sur une machine 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";
}
}
Réponses:
Pour convertir automatiquement des fichiers CSV en fichiers XLS / XLSX, vous pouvez également utiliser ssconvert (fourni avec Gnumeric) ou unoconv (qui utilise LibreOffice).
Exemple SSConvert
Où le premier
ssconvert
appel crée un fichier MS Excel 2007/2010 et le second un fichier Excel 2007 old school.Vous pouvez vérifier les fichiers via
file
:Vous pouvez répertorier tous les formats de fichiers de sortie pris en charge via:
Exemple Unoconv
qui crée example.xls, qui est un fichier Excel 97/2000 / XP.
Vérifier via fichier:
Vous pouvez répertorier tous les formats de fichiers pris en charge via:
la source
soffice --convert-to xlsx:"Calc MS Excel 2007 XML" filename.csv --headless
est également très utile.