Hur konverterar du XLS-fil till CSV i kommandorad [Linux]
Konvertering av Microsoft Excel-ark (XLS-fil) till en kommaseparerad fil (CSV) är relativt enkelt när du använder en Office-produkt, men det kan vara en tråkig uppgift för programmerare att göra det på kommandoraden. Situationen kan komma när du har en XLS-fil och du måste fylla databasen från den efter formatering av data. Konvertering av XLS till CSV är det perfekta sättet här, eftersom CSV är det format som enkelt kan manipuleras på något språk, vare sig det är Shell, Perl, Ruby, Python eller Java. I det här inlägget ser vi de bästa sätten att konvertera XLS-filen till CSV och vi diskuterar också för och nackdelar med att använda dessa metoder.
catdoc (i C)
Det första kommandoradsverktyget vi ska prata om är catdoc. Verktyget är skrivet i C av VB Vagner.
1.1 Så här installerar du det:
Ladda ner verktyget härifrån. Gå till din hämtningskatalog och ta bort den. Du kan använda följande kommandon (om du står inför problem):
gunzip catdoc-0.94.2.tar.gz tjär xvf catdoc-0.94.2.tar
Nu har vi en catdoc-0.94.2 katalog. Gå in i den här katalogen och kör följande kommandon för att installera den:
./configure gör gör installationen
Installationen är en enkel process och du borde inte möta några problem här.
1.2 Hur man använder det:
Det finns flera alternativ att köra kommandot. Jag ska berätta vilka alternativ som fungerar bäst för Microsoft Excel-konvertering:
xls2csv -x "Path_of_Your_XLS_File" -s cp1252 -d 8859-1> "Path_of_Your_CSV_File"
Notera alternativet " -s " och " -d " (står för källa och destination). Dessa alternativ används för att ange vilken teckenkodning som används i källfilen och vad skulle vara teckenkodningen för destinationsfilen. Här har jag använt cpl1252 som är Microsoft teckenkodning och 8859-1 som används för västeuropeisk teckenkodning. Du kan använda vilka andra alternativ som finns tillgängliga med hjälpkommandot.
xls2csv --help
1.3 Fördelar och nackdelar:
Fördelar : Straight forward installation
Nackdelar : Ingen selektiv omvandling i ett flervalsscenario, det täcker alla ark som finns i xls-filen (en lösning skulle vara att explicit ange en sidfot i varje ark och använd sedan alternativet -b i kommandot), problem med få europeiska karaktärer, problem med datumfält (datumfälten är upprustade stora gånger), messer med citat.
xls2csv (i Perl)
Det andra verktyget vi ska prata om är ett Perl-skript xls2csv skrivet av Ken Prows i Perl.
2.1 Så här installerar du det:
Hämta skriptet här. Gunzip och tjära det som vi gjorde i föregående avsnitt och gå till den extraherade katalogen och använd följande kommandon för att installera den:
perl Makefile.PL gör gör testinstallation
Kom ihåg att Perl-skriptet använder ett antal andra Perl-moduler:
Locale :: Recode Unicode :: Kalkylark :: ParseExcel Text :: CSV_XS
Under installationen av xls2csv kommer det att ge fel att de nämnda perl-modulerna inte har installerats. Det kommer att be dig att ladda ner modulerna. Ladda ner och installera dessa moduler när du blir frågad. Alla dessa modulinstallationer kräver root privilegier. Om du inte har root access, bör du följa anvisningarna som ges här för att installera en Perl-modul.
2.2 Hur man använder det:
Följande kommando kan användas för att konvertera Microsoft Excel till csv:
xls2csv -x "Path_of_Your_XLS_File" -b cp1252 -w WorkSheetName -c "Path_of_Your_CSV_File" -a 8859-1
Alternativet x och c (betyder xls och csv) används för att ange inmatnings- och utdatafiler där b och a (betyder före och efter) används för att ange respektive teckenkodning. Vi har samma teckenkodning som i tidigare verktyg.
2.3 Fördelar och nackdelar:
Fördelar : Bra med västeuropeiska karaktärskonvertering och datumfält, stödjer selektiv flerskiktsomvandling,
Nackdelar : Flera Perl-moduler måste installeras, första cellen ska inte vara tom (annars skippar den hela raden), messer med citat
Det finns också några andra sätt. Vissa skript i Python och Java är också tillgängliga att använda men de är inte lika bra som de här diskuteras här. Jag hoppas att artikeln löser ditt problem. Frågor och förslag välkomnas alltid. Skål :)