Я использую Debian Linux и хочу преобразовать файл CSV в файл электронной таблицы Excel XLS. В Catdoc пакет включает xls2csv
команда, конвертирующая из XLS в CSV. Однако обратного не происходит.
Поскольку у меня есть только файл CSV, меня не волнует форматирование или что-то в этом роде. Я не беспокоюсь, если он генерирует только очень простой файл XLS и не поддерживает новые модные версии. Если это таблица XLS.
Попробуйте использовать ssconvert
инструмент из пакета "gnumeric". В Debian установите пакет с sudo apt-get install gnumeric
а затем из командной строки запустите:
ssconvert file.csv file.xls
Это должно сработать.
Почему вы хотите это сделать? Поскольку вы не заинтересованы в добавлении или изменении данных / метаданных, вы можете просто оставить его как csv. CSV по умолчанию связан с MS Excel, поэтому, кто бы ни собирался его открыть, тот откроет его в MS Excel.
Если по какой-то причине это не сработает, имейте в виду, что, насколько мне известно, вы можете сгенерировать (своего рода) действительный файл xls, используя следующий скелет:
<table>
<tr>
<td>field0</td>
<td>field1</td>
..
<td>fieldX</td>
</tr>
... ad inf
</table>
(Я серьезно)
Eсть решение на основе Python на Sourceforge называется csv2xls, что может соответствовать всем требованиям.
Похоже, что на данный момент он не поддерживается (последнее действие было более года назад), но если он делает то, что вам нужно, это не должно иметь большого значения.
Действительно, есть некоторые проблемы с фильтрами из CSV и любой формы XLS или даже openOffice. Как: Разделитель записей:, Знак конца строки: \ n или; Определение строки: "или подобное.
Если я правильно понял, вы хотите сделать это в командной строке в некоторых сценариях. Это точно такая же проблема, как и у меня сейчас: из DATA в формате csv представить их заказчику в формате XLS.
Я нашел этот пост: https://forum.openoffice.org/en/forum/viewtopic.php?f=5&t=39844
Но я не полностью удовлетворен. Они могли бы быть вариантом.
Действительно, если у вас установлен какой-то openOffice, вы можете попробовать поиграть с некоторой информацией из: http://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/
В своей оболочке я набрал:
soffice --help
И часть вывода:
--convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir] files
Batch convert files.
If -outdir is not specified then current working dir is used as output_dir.
Eg. -convert-to pdf *.doc
-convert-to pdf:writer_pdf_Export -outdir /home/user *.doc
Попробуйте использовать макрос Openoffice ...
См. Для начала: Как конвертировать Word -> PDF из командной строки http://www.oooforum.org/forum/viewtopic.phtml?t=3772
Я бы написал небольшой код для прямого вывода простой версии XML-формата Excel 2002: http://en.wikipedia.org/wiki/Microsoft_Excel#File_formats
Таблица XML
Хотя предполагаемое расширение файла для этого формата - .xml, программа также правильно обрабатывает файлы XML с расширением .xls. Эта функция широко используется сторонними приложениями (например, MySQL Query Browser), чтобы предлагать возможности «экспорта в Excel» без реализации двоичного формата файла. Следующий пример будет правильно открыт в Excel, если он сохранен как Book1.xml или Book1.xls:
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1" x:FullRows="1">
<Row>
<Cell><Data ss:Type="String">Name</Data></Cell>
<Cell><Data ss:Type="String">Example</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">Value</Data></Cell>
<Cell><Data ss:Type="Number">123</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
В качестве альтернативы, если бы этого не было достаточно, я бы напрямую реализовал минимальный вывод .xlsx. Это zip-файл с файлами XML, которые должны быть легко управляемыми по сравнению со старыми двоичными форматами.
Есть программа под названием csv2xls
(написано на C ++), это должно делать именно то, что вы хотите (не путать с реализацией Python2, упомянутой в другом ответе).
https://github.com/ferkulat/csv2xls
Последняя фиксация была 2 месяца назад, и, судя по всему, программное обеспечение кажется стабильным.
Я бы сказал, что файл .CSV уже является файлом Excel с необходимыми вам функциями. Есть только одно раздражение избегать, и все готово. Если вы действительно хотите преобразовать его в .XLS, попросите Excel сделать это позже. Но на самом деле в этом нет необходимости, учитывая предоставленное вами описание.
Фактически существует необходимость конвертировать CSV в Excel, когда вы отправляете файлы пользователям, которые не хотят конвертировать сами файлы CSV в Excel. В Excel также есть способ открыть файл CSV и сохранить его в файл в формате Excel. Но мы хотим избежать этого дополнительного шага для пользователей. К моему разочарованию, я обнаружил, что, кроме сценариев PowerShell, на рынке нет надежного продукта для преобразования из командной строки с соблюдением разделителей столбцов, строкового ввода, заголовков и параметров, которые вы могли бы захотеть Добавить.