-1

jTableインスタンスを Excel ファイルに変換するアプリがあります。以前の質問で、使用にFileOutputStream()問題がありましたが、その問題はフォルダ/ファイルにアクセスする AD ユーザーの権限にあることがわかりました。上司が特権を変更することを許可しないので、FileWriter()代わりに を使用することにしましたが、うまくいきました。唯一の問題は、ユーザーが開いているファイルが破損していることをユーザーに警告し続けたことです。警告は次のとおりです。

開こうとしているファイル 'filename.xls' は、ファイル拡張子で指定された形式とは異なります。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。今すぐファイルを開きますか?

Excel 2007 のファイル拡張子セキュリティにある解決策を探しました。情報はこちら

アプリがカバーするすべてのワークステーションのシステム レジストリでいくつかの構成を行いました。

私の上司のワークステーションであるワークステーションの 1 つに Office 14 があるため、Office 14 の破損ファイル警告を削除する方法があるかどうかを尋ねたいだけです。 .

4

1 に答える 1

3

あなたは「ブードゥー教のプログラミング」の実践にふけっているように見えます。つまり、理解していない問題に理解していない解決策を適用することです。

まず、これ:

FileOutputStream() の使用に問題がありましたが、フォルダ/ファイルにアクセスする AD ユーザーの権限に問題があることが判明しました。上司が権限を変更することを許可しないので、代わりに FileWriter() を使用することにしました。これはうまく機能しました。

率直に言って、これは意味がありません。を使用してファイルを開くことができない場合はnew FileOutputStream(File)new FileWriter(File). なんで?コンストラクターのソース コードは次のとおりです。

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

つまり、FileWriter コンストラクターが最初に行うことは、動作しないと言う FileOutputStream コンストラクターを呼び出すことです!! (そして、これらのコンストラクターの他のオーバーロードにも同じことが当てはまります。)

次に、現在の問題は、ファイルタイプがサフィックスと一致しないため、Excel で XLS ファイルを開くことができないことです。そして、提案された解決策は、レジストリをいじることです。しかし、確かに正しいアプローチは、ファイルの種類がサフィックスと一致しない 理由を見つけることです。

  • ファイル形式を間違えていませんか (例: FileWriter を使用して記述したため)。
  • 使用したスプレッドシート形式に対して間違ったファイル接尾辞を選択していませんか?
  • 間違った MIME タイプでユーザーのマシンにダウンロードしていませんか?

すべてのクライアント マシンのレジストリを叩く...どこかの Web サイトでそれを読んだという理由だけで...それはブードゥーです!

あなたの上司が、あなたが AD 権限をいじることを禁じていたのは驚きではありません。この時点で、彼はおそらくあなたが深刻な損害を与えるのではないかと心配しています.


ところで、警告を消すためのレジストリ ハッキングは、実際には、攻撃に対してユーザーの PC を強化するのに役立つように設計されたセキュリティ チェックをオフにしています。それはあなたの問題に対する健全な解決策とは思えません。

于 2012-06-05T11:28:32.307 に答える