Celeb Glow
updates | March 11, 2026

How to convert .xlsx to .txt?

I want to know if there is a Linux tool or a script available to convert .xlsx file to .txt.

3

7 Answers

The ssconvert tool that comes with Gnumeric can convert xlsx files to text:

ssconvert Book1.xlsx file.csv
1

Another way is rename it as .zip and unzip it as all the .***x files are just zipped folders containing xml. Inside you will find a folder "xl" with a subfolder "worksheets", inside is an xml file for each worksheet. The format of them is pretty simple and should be easy to parse with any of the xml packages.

1

If it's just textual/numerical data (which I have to assume it is, otherwise a text file would be a bit ambitious), then you could try xlsx2csv to generate CSV files from your spreadsheets.

I can't vouch for its effectiveness, but it's worth a try.

I do not know about a tool in linux, but you can use Google Docs.

You upload the spreadsheet there and you can then export it as txt.

Not a shell script, (unlike the script mentioned in Andy's post from Oct 20 '10 at 8:44), but a python script:

with the same name, xlsx2csv

This exports date values as floats though:

2012/07/01 => 41091,

"2012/07/01 01:00:00" => 41091.0416666667

xlsx2csv.py --help
Usage: xlsx2csv.py [options] infile [outfile]
Options: --version show program's version number and exit -h, --help show this help message and exit -s SHEETID, --sheet=SHEETID sheet no to convert (0 for all sheets) -d DELIMITER, --delimiter=DELIMITER delimiter - csv columns delimiter, 'tab' or 'x09' for tab (comma is default) -p SHEETDELIMITER, --sheetdelimiter=SHEETDELIMITER sheets delimiter used to separate sheets, pass '' if you don't want delimiters (default '--------') -f DATEFORMAT, --dateformat=DATEFORMAT override date/time format (ex. %Y/%m/%d) -i, --ignoreempty skip empty lines -r, --recursive convert recursively

Not command line, but OpenOffice can read .xslx files and save as csv. Its probably already on your Linux machine.

I used the command below to convert all my xlsx files in the current directory (must have Libre Office installed):

for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy