How to convert XLSX file to XLS or CSV file in Linux


In this article, I will take you through the steps to convert xlsx file to xls or csv file in Linux. Many times you might face a scenario where you have to read the data from the latest excel file in Linux but you cannot do it until you convert it to csv file.

Also there might be a scenario where you need to convert the latest excel file i.e xlsx file to the older excel format i.e xls file as you might not able to work with xlsx file directly. For all these scenarios we have few important tools available that can be employed to serve the purpose. We will discuss about those tools in below section with the help of examples.


How to convert XLSX file to XLS or CSV file in Linux

How to convert XLSX file to XLS or CSV file in Linux

Also Read: How to Install MySQL on Ubuntu 20.04 LTS (Focal Fossa)

Step 1: Prerequisites

a) You should have a running Linux Server.

b) You should have sudo or root access to run privileged commands.

c) You should have xls2csv utility available in your System. You can check How to Install xls2csv on Ubuntu 20.04 LTS (Focal Fossa) to install the utility.


Step 2: Install Gnumeric 

Gnumeric is a free and very powerful open source spreadsheet program available in Linux that can be employed to convert xlsx file to xls. To install this tool in a Ubuntu/Debian based systems, you just need to use sudo apt-get install gnumeric command as shown below.

cyberithub@ubuntu:~$ sudo apt-get install gnumeric
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libfwupdplugin1 libllvm11 libxmlb1
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
gnumeric-common gnumeric-doc gsfonts libgoffice-0.10-10 libgoffice-0.10-10-common pxlib1
Suggested packages:
gnumeric-plugins-extra libgsf-1-dev docbook-xsl
The following NEW packages will be installed:
gnumeric gnumeric-common gnumeric-doc gsfonts libgoffice-0.10-10 libgoffice-0.10-10-common pxlib1
0 upgraded, 7 newly installed, 0 to remove and 24 not upgraded.
Need to get 20.8 MB of archives.
After this operation, 69.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 focal/universe amd64 gnumeric-common all 1.12.46-1ubuntu2 [2,665 kB]
Get:2 focal/universe amd64 libgoffice-0.10-10-common all 0.10.46-1 [679 kB]
Get:3 focal/universe amd64 libgoffice-0.10-10 amd64 0.10.46-1 [1,557 kB]
Get:4 focal/universe amd64 pxlib1 amd64 0.6.8-1 [36.8 kB]
Get:5 focal/universe amd64 gsfonts all 1:8.11+urwcyr1.0.7~pre44-4.4 [3,120 kB]
Get:6 focal/universe amd64 gnumeric amd64 1.12.46-1ubuntu2 [2,319 kB]
Get:7 focal/universe amd64 gnumeric-doc all 1.12.46-1ubuntu2 [10.4 MB]
Fetched 20.8 MB in 7s (3,051 kB/s)
Preconfiguring packages ...
Selecting previously unselected package gnumeric-common.
(Reading database ... 182730 files and directories currently installed.)
Preparing to unpack .../0-gnumeric-common_1.12.46-1ubuntu2_all.deb ...
Unpacking gnumeric-common (1.12.46-1ubuntu2) ...
Selecting previously unselected package libgoffice-0.10-10-common.
Preparing to unpack .../1-libgoffice-0.10-10-common_0.10.46-1_all.deb ...
Unpacking libgoffice-0.10-10-common (0.10.46-1) ...
Selecting previously unselected package libgoffice-0.10-10.
Preparing to unpack .../2-libgoffice-0.10-10_0.10.46-1_amd64.deb ...
Unpacking libgoffice-0.10-10 (0.10.46-1) ...
Selecting previously unselected package pxlib1.
Preparing to unpack .../3-pxlib1_0.6.8-1_amd64.deb ...
Unpacking pxlib1 (0.6.8-1) ...
Selecting previously unselected package gsfonts.
Preparing to unpack .../4-gsfonts_1%3a8.11+urwcyr1.0.7~pre44-4.4_all.deb ...
Unpacking gsfonts (1:8.11+urwcyr1.0.7~pre44-4.4) ...
Selecting previously unselected package gnumeric.
Preparing to unpack .../5-gnumeric_1.12.46-1ubuntu2_amd64.deb ...
Unpacking gnumeric (1.12.46-1ubuntu2) ...
Selecting previously unselected package gnumeric-doc.
Preparing to unpack .../6-gnumeric-doc_1.12.46-1ubuntu2_all.deb ...
Unpacking gnumeric-doc (1.12.46-1ubuntu2) ...
Setting up gnumeric-common (1.12.46-1ubuntu2) ...
Setting up pxlib1 (0.6.8-1) ...
Setting up gnumeric-doc (1.12.46-1ubuntu2) ...
Setting up gsfonts (1:8.11+urwcyr1.0.7~pre44-4.4) ...
Setting up libgoffice-0.10-10-common (0.10.46-1) ...
Setting up libgoffice-0.10-10 (0.10.46-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for fontconfig (2.13.1-2ubuntu3) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for libglib2.0-0:amd64 (2.64.6-1~ubuntu20.04.4) ...
Setting up gnumeric (1.12.46-1ubuntu2) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...


Step 3: Convert XLSX file to XLS file 

ssconvert is one utility you will get after installing Gnumeric package in your System. To convert latest excel file format xlsx to the older xls format, you need to use ssconvert --export-type=<ID> <XLSX_FILE> <XLS_FILE> syntax.

cyberithub@ubuntu:~$ ssconvert --export-type=Gnumeric_Excel:excel_dsf excel_example.xlsx excel_example.xls


Step 4: Convert XLS file to CSV file

Now if you want to convert XLS file to CSV then you need to use another tool called xls2csv. Here we have a XLS file called excel_example.xls which needs to be converted to excel_example.csv file. For that we are using xls2csv -x excel_example.xls -s cp1252 -d 8859-1 > excel_example.csv command as shown below.

cyberithub@ubuntu:~$ xls2csv -x excel_example.xls -s cp1252 -d 8859-1 > excel_example.csv

-x : print unknown Unicode chars as \xNNNN, rather than as question marks

-s : specifies source charset

-d : specifies destination charset name

After converting the file into CSV format, you can try to check the contents of the file by using cat excel_example.csv command as shown below.

cyberithub@ubuntu:~$ cat excel_example.csv
"Employee ID","Employee Name","Department","Salary in $(per month)"
"1076256","Trevor","Medical ","6300"
"Employee ID","Employee Name","Department","Salary in $(per month)"
"1076256","Trevor","Medical ","6300"

Leave a Comment