2015-07-21 3 views
2

В настоящее время я создаю файл csv из sql в сценарии bash. Затем я отправляю его другим людям. Мне было предложено добавить в файл авто фильтры (концепцию excel), прежде чем отправлять их по электронной почте. Я хотел бы иметь возможность сделать это в сценарии bash без взаимодействия с человеком. До сих пор googling/stackoverflowing я не нашел способ сделать это.Преобразование csv в excel рабочий лист с фильтрами в linux

ответ

1

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.11%29.aspx

Это также чистый текст, поэтому он может быть создан сценарием bash.

Простой пример с Автофильтром:

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

Другой возможностью, что сценарий Баша может вызвать программное обеспечение, которое может создать действительно XLS или XLSX файлов.

Смежные вопросы