以简单的方式导出到Excel(但不是CSV)

昨天我发现了这个如何通过简单地生成HTML将数据导出到Excel电子表格。 看起来像一个简单的导出格式化单元格的方法,而不能使用CSV格式。

我的想法是在Java应用程序中处理一些数据,将结果导出到Excel电子表格中,并利用Excel的function进一步分析数据,绘制图表等(避免重新实现Excel的强大function)。 但是,在输出数据之前,我想为某些单元格的背景着色。 Excel的“条件格式”function是不够的(加上,我不想手动)。 我发现在Java应用程序中准备具有所有格式的电子表格,并从Excel中转​​到此处非常方便。

在“ How-To”中提到的方法很简单,运行良好,除了两个问题。 我希望你们中的一些人可能以前有过这方面的经验,并且能够为这个问题提供一些启示。

  1. 当我在Firefox中打开XLS文件时,像<td bgcolor="#ff2323">这样的单个单元格着色将完全符合我的要求,但是Excel会将颜色更改为我认为他们称之为“网页安全”的调色板。 这意味着,不是有256种不同的红色,我得到了“红色”,“紫红色”,“粉红色”,“橙色”,“淡黄色”和“白色”。 有没有办法阻止这种颜色转换发生?

  2. 当我打开XLS文件(实际上只是HTML里面的内容)时,看起来不错,但是分开单个单元格的细灰线消失了,我无法弄清楚如何“打开”它们。 那是什么?

问题1是我真正想要解决的主要问题。

实际上,我希望Excel不会给你标准的网页安全的颜色,而是从它自己的调色板中select(甚至更小;“传统”版本的Excel中只有56个插槽,也许2007年已经解决了这个问题)。 可以在Excel中select自己的自定义颜色(工具 – >选项 – >颜色,在我使用的版本中),但是您select的每种新颜色都将replace“工厂”默认设置中的一种。

我怀疑自动的HTML到Excel的导入并不希望为你设置这些颜色的麻烦,特别是因为你的HTML伪Excel文件包含比Excel的调色板有插槽更多的颜色的可能性。 那么无论如何,它将被迫让你失望。 Excel的实施者可能认为只要让你失望就会变得更容易,更简单。 ;)

您可以使用特殊的XML格式选项来强制电子表格中的网格线:

 <html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <head> <xml> <x:ExcelWorkbook> <x:ExcelWorksheets> <x:ExcelWorksheet> <x:Name>Sheet</x:Name> <x:WorksheetOptions> <x:Print> <x:Gridlines /> </x:Print> </x:WorksheetOptions> </x:ExcelWorksheet> </x:ExcelWorksheets> </x:ExcelWorkbook> </xml> </head> <body> <table> <tr><td bgcolor="#ff2323">hello</td></tr> </table> </body> </html> 

更一般地,请参阅此MSDN链接以获取有关此格式的详细文档。

对于网格线…

  1. 进入工具 > 选项 ,然后在视图选项卡中选中网格线checkbox

(基于Excel 2003)