2010-03-02 44 views
0

我使用DisplayTag导出Excel文档。它会保存为一个.xls文件到我的桌面。当我用Excel打开它时,此错误显示如下:Displaytag正在将CSV导出到.xls文件中

“试图打开的文件'filename.xls'采用与文件扩展名指定的格式不同的格式,确认文件没有损坏,在打开文件之前来自可信来源。“

如果我点击“是”,它在Excel中显示得很好。如果我用Textpad打开它,我发现它是一个二进制文件,但它看起来只是“。”。分隔字符串。

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

编辑:

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

回答

1

为Excel的默认出口类被设置为CSV类,但给它.xls扩展。更改显示标签。性能是这里的关键,是这样的:

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 
+0

嗨,我在1.1版本上试用这个解决方案,并且不为我工作,我的文件不会从csv转到excel。 – Ricardo 2012-05-29 13:06:58

3

你在Excel 2007中吗?似乎是一个known问题:

In some cases after upgrading to Excel 2007, you may get the following error: The file you are trying to open .xlsx is in a different format than specified by the file extension. verify the file is not corrupted and is from trusted source before opening the file. Do you want to open the file now?

这个错误,当你试图在Excel 2007中打开XLS文件(Excel的2000- 2003年)在大多数情况下,特别是发生此类问题,可以通过定义MIME来解决类型并将它们与扩展关联。

...

但是,如果你不想寻找一个解决方案,但只是想解决的问题,在您的注册表中插入此键来抑制通知:

[ HKEY_CURRENT_USER \软件\微软\办公室\ 12.0 \ EXCEL \安全]“ExtensionHardening” = DWORD:

    :00000000

    您可以通过以下步骤实现上述

  1. 打开注册表(开始 - >运行 - > 器regedit.exe)
  2. 导航到 HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. 在右窗口点击右键并选择 - >DWORD
  4. 类型“ExtensionHardening”作为 名(不带引号)
  5. Ve的rify数据具有价值 ““
+0

谢谢! 该页面似乎在我公司的防火墙处被阻止,但这正是我所寻找的。 – 2010-03-02 20:49:06

+0

向后旋转,不是这样。 : -/ – 2010-03-02 21:01:43

+0

嗯.. ..如果你不能从办公室访问,添加一些细节从线程.. – 2010-03-02 21:25:17

0

您需要添加下面的线在你的属性文件:

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

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