Displaytag正在将CSV导出为.xls文件

时间:2010-03-02 20:39:36

标签: excel displaytag

我使用DisplayTag导出Excel文档。它将.xls文件另存为我的桌面。当我用Excel打开它时,会显示以下错误:

“您尝试打开的文件'filename.xls'的格式与文件扩展名指定的格式不同。在打开文件之前,请验证文件是否已损坏且来自受信任的来源。”< / p>

如果单击“是”,它在Excel中显示正常。如果我用Textpad打开它,我看到它是一个二进制文件,但它似乎只是“。”分隔的字符串。

任何想法我可能做错了,或者接下来如何调试这个?

编辑:的:

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

3 个答案:

答案 0 :(得分:3)

您使用的是Excel 2007吗?似乎是known问题:

  

升级到Excel后的某些情况   2007年,您可能会收到以下错误:   您尝试打开的文件.xlsx   格式不同于   由文件扩展名指定。   验证文件是否已损坏   在开放前来自可靠来源   文件。要打开文件吗?   现在?

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

...

但是,如果您不想寻找解决方案,但只是想解决问题,请在注册表中插入此密钥以禁止通知:

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

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

  1. 打开您的注册表(开始 - &gt;运行 - &gt; REGEDIT.EXE)
  2. 导航至 的 HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. 右键单击右侧窗口     选择 - &gt;的 DWORD
  4. 键入“ ExtensionHardening ”作为 名称(不带引号)
  5. 验证数据是否具有该值 “的 0

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

但是这只输出当前页面记录而不是完整列表。