Displaytag正在将CSV导出到.xls文件中

我用DisplayTag导出Excel文档。 它保存为一个.xls文件到我的桌面。 当我用Excel打开它时,这个错误显示:

“正在尝试打开的文件'filename.xls'与文件扩展名所指定的格式不同。在打开文件之前,确认文件没有被破坏,并且来自可信来源。

如果我点击“是”,它在Excel中显示得很好。 如果我用Textpad打开它,我发现它是一个二进制文件,但它似乎只是“。”。 分隔的string。

任何想法,我可能做错了,或如何接下来debugging呢?

编辑 ::

如果我将扩展名更改为.txt,则不是二进制文件; 它只是一个分隔string列表。

你在Excel 2007吗? 似乎是一个已知的问题:

在某些情况下,升级到Excel 2007后,您可能会收到以下错误:您尝试打开.xlsx的文件格式与文件扩展名指定的格式不同。 在打开文件之前validation文件是否已损坏并且来自可信来源。 你想现在打开文件吗?

当您尝试使用Excel 2007打开XLS文件(Excel 2000-2003)时,尤其会出现此错误。在大多数情况下,可以通过定义MIMEtypes并将其与扩展关联来解决问题。

但是,如果您不想查找解决scheme,但只想解决问题,请在registry中插入此密钥以取消通知:

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ Excel \ Security]“ExtensionHardening”= dword:00000000

您可以通过执行以下操作来完成上述操作:

  1. 打开你的registry(开始 – >运行 – > regedit.exe)
  2. 导航到HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. 右键单击右边的窗口,selectNew – > DWORD
  4. input“ ExtensionHardening ”作为名称(不带引号)
  5. 确认数据的值为“ 0

Excel的默认导出类别被设置为CSV类,但给它扩展名为.xls。 更改displaytag.properties是这里的关键,如下所示:

export.types=csv excel xml rtf pdf export.excel=true export.xml=true export.csv=true export.rtf=false export.pdf=false export.excel.class=org.displaytag.export.excel.DefaultHssfExportView export.pdf.class=org.displaytag.export.DefaultPdfExportView export.rtf.class=org.displaytag.export.DefaultRtfExportView export.excel.filename=data.xls export.pdf.filename=data.pdf export.xml.filename=data.xml export.csv.filename=data.csv export.rtf.filename=data.rtf 

您需要在属性文件中添加以下行:

 export.excel.class=org.displaytag.export.excel.DefaultHssfExportView export.pdf.class=org.displaytag.export.DefaultPdfExportView 

但是,这只输出当前页面logging而不是完整的列表。