Het converteren van Microsoft Excel-werkbladen (XLS-bestanden) naar een CSV-bestand (Comma Separated) is relatief eenvoudig tijdens het gebruik van een Office-product, maar het zou een saaie taak voor programmeurs kunnen zijn om dit op de opdrachtregel te doen. De situatie kan zich voordoen wanneer u een XLS-bestand hebt en u moet de database na het formatteren van de gegevens ervan invullen. Het omzetten van de XLS naar CSV is hier de ideale manier omdat CSV het formaat is dat eenvoudig in elke taal kan worden gemanipuleerd, of het nu Shell, Perl, Ruby, Python of Java is. In dit bericht zien we de beste manieren om het XLS-bestand naar CSV te converteren en bespreken we ook de voor- en nadelen van het gebruik van deze methoden.

catdoc (in C)

De eerste opdrachtregel tool waar we het over gaan hebben is catdoc. De tool is geschreven in C door VB Vagner.

1.1 Hoe het te installeren:

Download de tool van hier. Ga naar je downloads-map en maak het ongedaan. U kunt de volgende opdrachten gebruiken (voor het geval u een probleem ondervindt):

 gunzip catdoc-0.94.2.tar.gz tar xvf catdoc-0.94.2.tar 

Nu hebben we een catdoc-0.94.2 directory. Ga naar deze map en voer de volgende opdrachten uit om het te installeren:

 ./configure make make install 

De installatie is een eenvoudig proces en u moet hier geen problemen ondervinden.

1.2 Hoe het te gebruiken:

Er zijn verschillende opties om de opdracht uit te voeren. Ik zal de opties vertellen die het beste werken voor de Microsoft Excel-conversie:

 xls2csv -x "Path_of_Your_XLS_File" -s cp1252 -d 8859-1> "Path_of_YS_CSV_File" 

Let op de optie " -s " en " -d " (staat voor bron en bestemming). Deze opties worden gebruikt om aan te geven welke tekencodering wordt gebruikt in het bronbestand en wat de tekencodering voor het doelbestand zou zijn. Hier heb ik cpl1252 gebruikt, dit is Microsoft-tekencodering en 8859-1 die wordt gebruikt voor West-Europese tekencodering. U kunt gebruiken wat andere opties beschikbaar zijn met behulp van de help-opdracht.

 xls2csv --help 

1.3 Voors en tegens:

Voors : ongecompliceerde installatie

Nadelen : Geen selectieve conversie in scenario met meerdere vellen, het dekt alle vellen in het xls-bestand (een oplossing zou zijn om expliciet een voettekst in elk blad op te geven en vervolgens optie -b in de opdracht te gebruiken), problemen met enkele Europese tekens, probleem met datumvelden (de datumvelden zijn een grote fout), knoeit met aanhalingstekens.

xls2csv (in Perl)

De tweede tool waar we het over gaan hebben is een Perlscript xls2csv geschreven door Ken Prows in Perl.

2.1 Hoe het te installeren:

Download het script hier. Gunzip en tar het zoals we deden in de vorige sectie en ga naar de uitgepakte directory en gebruik de volgende commando's om het te installeren:

 perl Makefile.PL make make test make install maken 

Onthoud dat dit Perl-script een aantal andere Perl-modules gebruikt:

 Locale :: Unicode hercoderen :: Spreadsheet kaarten :: ParseExcel-tekst :: CSV_XS 

Tijdens het installeren van xls2csv, geeft het een foutmelding dat de vermelde perl-modules niet zijn geïnstalleerd. Het zal u vragen om de modules te downloaden. Download en installeer deze modules wanneer hierom wordt gevraagd. Al deze module-installatie vereist root-rechten. Als u geen root-toegang hebt, moet u de hier gegeven instructie volgen om een ​​Perl-module te installeren.

2.2 Hoe het te gebruiken:

De volgende opdracht kan worden gebruikt om Microsoft Excel te converteren naar CSV:

 xls2csv -x "Path_of_Your_XLS_File" -b cp1252 -w WorkSheetName -c "Path_of_Your_CSV_File" -a 8859-1 

Optie x en c (betekent xls en csv) worden gebruikt om de invoer- en uitvoerbestanden op te geven waarbij b en a (voor en na) worden gebruikt om de respectieve tekencodering te specificeren. We hebben dezelfde tekencodering als in het vorige gereedschap.

2.3 Voors en tegens:

Voors : Goed met West-Europese conversie- en datumvelden voor tekens, ondersteunt selectieve conversie van meerdere vellen,

Nadelen : er moeten verschillende Perl-modules worden geïnstalleerd, de eerste cel mag niet leeg zijn (anders slaat deze de hele rij over), knoeit met aanhalingstekens

Er zijn ook een paar andere manieren. Sommige scripts in Python en Java zijn ook beschikbaar voor gebruik, maar ze zijn niet zo goed als deze twee die hier worden besproken. Ik hoop dat het artikel je probleem oplost. Vraag en suggesties zijn altijd welkom. Cheers :)