将csv转换为带有linux中的filter的excel工作表

目前我正在生成一个bash脚本中的sql csv文件。 然后我把它发送给其他人。 我被要求在发送电子邮件之前将自动filter(一个excel概念)添加到文件中。 我希望能够在没有人际交互的bash脚本中做到这一点。 到目前为止googling / stackoverflowing我还没有find办法做到这一点。

CSV不能应用AutoFilter。 Excel可读的最简单的格式是能够应用AutoFilter的Excel 2003 SpreadsheetML。 请参阅https://msdn.microsoft.com/en-us/library/bb226687%28v=office.11​​%29.aspx和https://msdn.microsoft.com/en-us/library/bb226693%28v=office 0.11%29.aspx

这也是纯文本,所以它可以由bash脚本创建。

AutoFilter的简单例子:

<?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?> <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> <Row> <Cell><Data ss:Type="String">name</Data></Cell> <Cell><Data ss:Type="String">value</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">a</Data></Cell> <Cell><Data ss:Type="Number">1</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">a</Data></Cell> <Cell><Data ss:Type="Number">2</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">b</Data></Cell> <Cell><Data ss:Type="Number">1</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">b</Data></Cell> <Cell><Data ss:Type="Number">2</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">c</Data></Cell> <Cell><Data ss:Type="Number">1</Data></Cell> </Row> <Row> <Cell><Data ss:Type="String">c</Data></Cell> <Cell><Data ss:Type="Number">2</Data></Cell> </Row> </Table> <AutoFilter x:Range="R1C1:R7C2" xmlns="urn:schemas-microsoft-com:office:excel"> </AutoFilter> </Worksheet> </Workbook> 

另一种可能性是,bash脚本可以调用一个可以创建真正的XLSXLSX文件的软件。