我在基于Spreadsheet XML的Ruby on Rails中构建了一个动态文件,用户可以将其作为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'>
<ss:Styles>
<ss:Style ss:ID='header'><ss:Font ss:Bold='1'/><ss:Alignment ss:Horizontal='Center'/></ss:Style>
<ss:Style ss:ID='row'><ss:Alignment ss:Horizontal='Center' ss:Vertical='Center'/></ss:Style>
</ss:Styles>
<Worksheet ss:Name='Sheet1'>
<Table>
<Row ss:StyleID='header'>
<Cell><Data ss:Type='String'>Folder</Data></Cell>
<Cell><Data ss:Type='String'>Sub-Folder</Data></Cell>
<Cell><Data ss:Type='String'>Value</Data></Cell>
</Row>
<Row ss:StyleID='row'>
<Cell><Data ss:Type='String'>root</Data></Cell>
<Cell><Data ss:Type='String'>@defCode</Data></Cell>
<Cell><Data ss:Type='String'>433999</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
将文件扩展名设为XLS允许用户使用任何电子表格应用程序(如OpenOffice,LibreOffice,当然还有Excel)打开它。问题是Excel在没有首先抱怨内容和扩展不匹配的情况下,不会打开包含XML代码的XLS文件。我不希望它这样做。
我已经决定将我生成的XML(我将其全部用大字符串)转换为合法的XLS,然后再将其发送给用户,但我无法找到任何资源来执行此操作。理想情况下,我会喜欢my_xml.to_xls类型的函数,但我会尽我所能。