2012-04-16 13 views
3

Excelファイルを作成していますが、これは読み取り専用にする必要があります。これを行うには、私は新しいシートを追加するたびに (sheetName).getSettings().setProtected(true); を使用します。管理者権限を持つJavaで作成されたExcelファイルへのアクセス権

だけ誰かがファイルへのフルアクセスを取得し、その利用者を確認した後、私は管理者権限を持つことができます。 (workbookName).getSheet(0).getSettings().setProtected(false);

管理者権限を持つ誰かがファイルを開いた後、それは読み取り専用ではないもはやです普通のユーザーがそれにもう少し多くのコンテンツを追加するまで - .getSettings().setProtected(true);つまり、管理者がファイルにアクセスした後、管理者以外の人がファイルを変更した後に、ファイルを変更することができます。私はそれを回る方法を手がかりにしていない、多分あなたは私を助けることができる?

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

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

+1

http://stackoverflow.com/questions/2609301/password-protected-excel-fileワークシートをループする方法を示します。管理者以外のユーザーの問題を解決するには、ファイルを開くたびに保護を設定します(アクセスレベルに応じて真/偽)。 –

+0

リンクをありがとう、シートをループして並べ替えました。しかし、アクセスの問題に関するあなたの提案に関して、私はそれをどうやって行うことができないのか分かりません。私はファイルが変更されるたびに保護を設定します(管理者以外のユーザーが変更した場合は 'true、管理者が変更する場合は' false ')。問題は、管理者が保護を 'false'に設定した後で、管理者以外がファイルを読み取り専用にする' true'に戻す前に、ファイルを開いて変更することができるということです。 – Hurdler

+1

管理が完了したことが分かっている場合は、その時点で保護を再度有効にすることができます –

答えて

1

商用ソフトウェアのお支払いをご希望の場合は、ExtenXLSの最新バージョンには、Excelでサポートされているすべての暗号化形式の完全な読み取りと書き込みがサポートされています。通常のWorkBookHandleの代わりにEncryptedWorkBookHandleを作成してください。それは、変更されていないJRE(RC4 for XLS)と128ビットAES(XLSX)でサポートされている最も強力な暗号を使用します。 OOXMLで256ビットのAESを使用し、JCE unlimited policyをインストールした場合は、MSOfficeEncrypterクラスを使用してください。

JExcelAPI(普及しているオープンソースのJavaスプレッドシートAPI)は、まったく暗号化をサポートしていないようです。 Aspose.Cells、商品提供、supports stong encryption。 Actuateのe.Spreadsheetのドキュメントはネットから消えているようだから、暗号化がサポートされているかどうかは分からない。

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

0

ここでは、ユーザーが簡単に編集でき、管理者が保護を解除すると標準的な選択肢がないと言われて以来のことです。しかし、もしこのファイルが使用されていれば、他の誰もそれを正しく外部に変更することはできませんか?管理者がExcelファイルを終了するときに再び保護するだけで、管理者がログインしたときに保護を解除することができます。あなたは、Excelファイルを編集し

無効保護に 書き込みの修正を行う すべてのそれらの機能で保護

を有効にするには、別の関数を作成することができます。これが可能であれば、AspectJのようなものを使って の保護を無効にし、保護を有効にすることができます ;

関連する問題