Я хочу знать, есть ли инструмент Linux или сценарий для преобразования файла .xlsx
в .txt
.
7 ответов
Другой способ - переименовать его в .zip и разархивировать, поскольку все файлы. *** x - это просто заархивированные папки, содержащие xml. Внутри вы найдете папку "xl" с подпапкой "рабочие листы", внутри - XML-файл для каждого рабочего листа. Их формат довольно прост и должен легко разбираться с любым из пакетов xml.
Я не знаю об инструменте в Linux, но вы можете использовать Google Docs.
Вы загружаете туда электронную таблицу и затем можете экспортировать ее в виде текста.
Если это просто текстовые / числовые данные (которые я должен предположить, иначе текстовый файл будет немного амбициозным), тогда вы можете попробовать xlsx2csv для создания файлов CSV из ваших электронных таблиц.
Я не могу ручаться за его эффективность, но стоит попробовать.
Не сценарий оболочки (в отличие от сценария, упомянутого в посте Энди от 20.10.10 в 8:44), а сценарий python:
с тем же именем, xlsx2csv
Это экспортирует значения даты как float, хотя:
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
Не командная строка, но OpenOffice может читать файлы .xslx и сохранять как csv. Это, вероятно, уже на вашем компьютере Linux.
Я использовал команду ниже, чтобы преобразовать все мои файлы xlsx в текущем каталоге (должен быть установлен Libre Office):
for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done