2012-06-05 58 views
-1

我有一個應用程序,它將jTable實例轉換爲excel文件。在我之前的問題中,我在使用FileOutputStream()時遇到了問題,並且事實證明問題在於AD用戶訪問文件夾/文件的權限。由於我的上司不會允許我改變特權,所以我使用FileWriter()代替了,這很好。唯一的問題是它一直警告用戶他們打開的文件已損壞。以下是警告:FileWriter()損壞文件警告

您嘗試打開的文件'filename.xls'採用與文件擴展名指定的格式不同的格式。在打開文件之前,驗證該文件是否已損壞並且來自受信任的來源。你想現在打開文件嗎?

我搜索了一個駐留在Excel 2007的文件擴展名安全性中的解決方案。信息可以發現here

我在每一個應用程序涵蓋了工作站的系統註冊表進行了一些配置。

我只是想問一下,是否有一個去掉Office 14中損壞的文件警告,因爲工作站,這是我的上級工作站之一,有Office 14.系統註冊表中的更改沒有停止損壞的文件警告他的工作站。

+0

你寫這個文件的格式是什麼?如果它是一個沒有格式的簡單excel文件,則可以簡單地使用帶有擴展名「.csv」的逗號分隔值文件。 – Helium

回答

3

我的印象是,你沉迷於「巫術編程」的做法;即將您不明白的解決方案應用於您不瞭解的問題。

首先,這樣的:

我在使用FileOutputStream中()問題,原來問題出在AD用戶的權限內訪問文件夾/文件。由於我的上級不會允許我改變權限,所以我使用FileWriter()來代替,這很好。

坦率地說,這是沒有意義的。如果您無法使用new FileOutputStream(File)打開文件,那麼您應該無法使用new FileWriter(File)打開它。爲什麼?因爲構造的源代碼是這樣的:

public FileWriter(File file) throws IOException { 
     super(new FileOutputStream(file)); 
    } 

換句話說,該FileWriter的構造函數所做的第一件事就是打電話給你說不行的FileOutputStream中構造! (這同樣適用於這些構造函數的其他重載。)

然後你目前的問題是真的有關Excel不會讓你打開XLS文件,因爲它的文件類型不匹配其後綴。而你提出的解決方案是混亂註冊表。但是,當然,正確的做法是找出爲什麼的文件類型與後綴不匹配。

  • 你是否以文件格式創建了mistaKe(例如'你是用FileWriter編寫的?
  • 您是否爲您使用的電子表格格式選擇了錯誤的文件後綴?
  • 你是否用錯誤的MIMEtype將它下載到用戶的機器上?

對所有客戶端計算機上的註冊表進行攻擊......僅僅因爲您在某個網站上閱讀了它...這是Voodooo!

我不驚訝你的老闆禁止你亂搞AD權限。此時,他可能擔心你會受到嚴重傷害。


順便說一句,你的註冊表黑客,使警告消失實際上是關閉,旨在幫助硬化用戶免受攻擊PC安全檢查。這並不能解決您的問題。