4

Excel ファイルを作成していますが、読み取り専用にする必要があります。これを行うには、次を使用します (sheetName).getSettings().setProtected(true); 。新しいシートが追加されるたびに。

管理者権限を持つユーザーのみがファイルへのフル アクセスを取得できるため、ユーザーが管理者権限を持っていることを確認した後、次のようにします。 (workbookName).getSheet(0).getSettings().setProtected(false);

管理者権限を持つユーザーがファイルを開くと、通常のユーザーがさらにコンテンツを追加するまで、読み取り専用ではなくなります.getSettings().setProtected(true);。つまり、管理者がアクセスした後、非管理者がアクセスする前に、誰かがファイルを変更できます。どうすればいいのかわかりません、助けていただけませんか?

--EDIT--
ユーザーは Excel ファイルにデータを追加し、セルに情報ファイルを入力しています - ワークブックを読み、コピーし、情報を追加し、ワークブックを書き込んで閉じます。管理者以外のユーザーは、直接開いて、追加したものがそこにあるかどうかを確認したり、他のユーザーが追加したものを確認したりできますが、ファイル内の何も変更することはできません。

ユーザーにデータを要求し、セルをファイルに追加するウィザードのようなアプリです。データを追加する方法の 1 つがhereです。このファイルは、ユーザーから個人情報を収集します。このアプリは、データにアクセスするためではなく、データを追加するためだけに使用されます。ユーザーは、出力をダブルクリックして直接ファイルにアクセスし、データを表示することしかできません。管理者はファイルを変更できますが、他のユーザーは変更できないはずです。

4

2 に答える 2

1

有料の商用ソフトウェアを購入する場合は、最新バージョンのExtenXLSを使用すると、Excel でサポートされているすべての暗号化形式の読み取りと書き込みが完全にサポートされます。EncryptedWorkBookHandle通常の の代わりに を構築するだけWorkBookHandleです。これは、変更されていない JRE、XLS 用の RC4、および XLSX 用の 128 ビット AES によってサポートされる最も強力な暗号を使用します。OOXML で 256 ビット AES を使用する必要があり、JCE 無制限ポリシーMSOfficeEncrypterをインストールしている場合は、クラスで実行できます。

人気のあるオープンソース Java スプレッドシート API であるJExcelAPIは、暗号化をまったくサポートしていないようです。商用製品であるAspose.Cellsは、強力な暗号化をサポートしています。Actuate の e.Spreadsheet のドキュメントがネットから消えたようで、暗号化に対応しているかどうかわかりません。

自由に利用できる Java スプレッドシート API のいずれも、暗号化されたスプレッドシートの作成をサポートしていないように見えるため、商用ソフトウェアを使用したくない場合は、回避策を考え出す必要があります。たとえば、スプレッドシートを暗号化された ZIP ファイルに書き込むことができます。java.util.zip は暗号化をサポートしていませんが、Zip4jはサポートしているようです。

于 2012-04-22T05:28:01.213 に答える
0

これは、ユーザーが簡単に編集でき、管理者が保護を削除すると、標準的な代替手段がないように思われるとあなたが言ったからです。ただし、このファイルが使用中の場合、他の誰もそれを外部で変更できませんか? したがって、管理者がExcelファイルを終了するときに再度保護し、管理者がログインするときに保護を解除するだけです.Timが言ったように. Excelファイルを編集するための個別の関数を作成してから実行できます

保護を無効にする 書き込み変更 保護を有効にする

これらすべての機能で。これが実現可能な場合は、AspectJ のようなものを使用して、保護の無効化と保護部分の有効化を簡素化できます。

于 2012-04-27T08:44:56.137 に答える