在Linux命令行上将CSV文件转换为XLS文件?

我正在使用Debian Linux,我想将CSV文件转换为Excel XLS Spreadsheet文件。 catdoc软件包包含从XLS转换为CSV的xls2csv命令。 但是,这并没有做相反的事情。

由于我只有一个CSV文件,我不关心格式或类似的东西。 我不担心,如果它只生成一个非常简单的XLS文件,并不支持花哨的新版本。 只要它是一个XLS电子表格。

你为什么想这么做? 由于您对添加或修改数据/元数据不感兴趣,因此可以将其保留为csv。 CSV默认情况下与MS Excel相关联,所以无论谁打开它,都会在MS Excel中打开它。

如果出于某种原因,这对你不起作用,请记住,据我所知,可以通过使用以下框架生成(某种)有效的xls文件:

 <table> <tr> <td>field0</td> <td>field1</td> .. <td>fieldX</td> </tr> ... ad inf </table> 

(我是认真的)

尝试使用“ ssconvert ”包中的ssconvert工具。 在Debian上,用sudo apt-get install gnumeric安装软件包,然后从命令行运行:

 ssconvert file.csv file.xls 

这应该做的工作。

Sourceforge上有一个基于python的解决scheme,叫做csv2xls,可能适合这个账单。

目前似乎没有保留(最后一个活动是在一年以前),但如果它做到了你所需要的,那么这应该不会太重要。

尝试使用Openofficemacros…

请参阅开始:如何从命令行转换Word – > PDF http://www.oooforum.org/forum/viewtopic.phtml?t=3772


从CSV和任何forms的XLS甚至openOffice的filter确实有一些问题。 就像:logging分隔符:,行结束符:\ n或; string定义:“或类似的。

如果我正确地得到它,你想要在一些脚本中的命令行。 这与我现在的问题完全相同:从CSV格式的数据,以XLS格式呈现给客户。

我发现这个职位: https : //forum.openoffice.org/en/forum/viewtopic.php?f=5&t=39844

但我并不完全满意。 他们可能是一个select。

事实上,如果你安装了某种openOffice,你可以尝试使用http://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/

在我的shell中input:

 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 

我会写一些代码来直接输出一个简单版本的Excel 2002 XML格式: http : //en.wikipedia.org/wiki/Microsoft_Excel#File_formats

XML电子表格

尽pipe此格式的预期文件扩展名为.xml,但该程序也能正确处理扩展名为.xls的XML文件。 此function被第三方应用程序(如MySQL Query Browser)广泛使用,在不执行二进制文件格式的情况下提供“导出到Excel”function。 如果保存为Book1.xml或Book1.xls,以下示例将被Excel正确打开:

 <?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> 

或者,如果没有提供足够的function,我会直接实现最小的.xlsx输出。 这是一个带有XML文件的压缩文件,与旧的二进制格式相比,这个文件应该是可以处理的。

有一个名为csv2xls (用C ++编写)的软件,应该按照你的意思去做(不要和另一个答案中提到的Python2实现混淆)。

https://github.com/ferkulat/csv2xls

最后一次提交是在2个月前,从外观上看,软件看起来是稳定的。

我会争辩说一个.CSV文件已经是一个你想要的function的Excel文件。 只有一个烦恼是要避免的,而且你们都已经设定好了。 如果你真的想把它转换成.XLS,让Excel稍后再做。 但是根据你提供的描述,确实没有必要这样做。

当您将文件发送给不想将自己的CSV文件转换为Excel的用户时,实际上需要将CSV转换为Excel。 在Excel中也可以打开CSV文件并将其保存为Excel格式的文件。 但是我们想要为用户避免这个额外的步骤。 我发现,除了PowerShell脚本外,我还发现,除了PowerShell脚本之外,市场上还没有可靠的产品来执行命令行转换,包括可能需要的列分隔符,行代码,标题和参数加。