2010-03-02 47 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 

但這輸出當前頁的記錄,而不是完整的列表。