Aspose.Cells を使用してユーザーがワークシート内の範囲を編集できるようにする

導入

Excel ドキュメントには、多くの場合、不必要な編集から保護したい機密データや構造化コンテンツが含まれています。ただし、特定のセルや範囲を特定のユーザーに対して編集可能にしたい場合があります。そこで、Aspose.Cells for .NET が強力なツールとして登場します。このツールを使用すると、ワークシート全体を保護しながら、指定した範囲に編集権限を付与できます。予算スプレッドシートを共有し、特定のセルだけを編集可能にして、他のセルは保護したままにすることを想像してください。Aspose.Cells を使用すると、これを簡単かつ効率的に行うことができます。

前提条件

コーディング部分に進む前に、必要なものがすべて揃っていることを確認しましょう。

  • Aspose.Cells for .NET: Aspose.Cells for .NETライブラリがインストールされていることを確認してください。ダウンロードできます。ここ.
  • 開発環境: Visual Studio または C# 互換の IDE。
  • .NET Framework: バージョン 4.0 以降。
  • ライセンス: 試用制限を回避するためにライセンスの取得を検討してください。一時ライセンスはこちら.

パッケージのインポート

コードの先頭に必要な Aspose.Cells 名前空間を含めるようにしてください。

using System.IO;
using Aspose.Cells;

これにより、Excel ファイルで保護された範囲を設定するために必要なすべてのクラスとメソッドにアクセスできるようになります。 基礎が整いましたので、コードを 1 ステップずつ詳細に確認してみましょう。

ステップ1: ディレクトリを設定する

ファイルを操作する前に、Excel ファイルを保存するディレクトリを設定する必要があります。これにより、ファイルが適切に整理され、安全に保存されます。

//ドキュメントディレクトリへのパスを定義する
string dataDir = "Your Document Directory";
//ディレクトリが存在するかどうかを確認し、存在しない場合は作成します
bool isExists = Directory.Exists(dataDir);
if (!isExists)
{
    Directory.CreateDirectory(dataDir);
}

コードのこの部分は、ディレクトリがファイル操作の準備ができていることを確認します。これは、後続のすべての基礎を築くものと考えてください。

ステップ2: ワークブックとワークシートを初期化する

次に、新しいワークブックを作成し、その既定のワークシートにアクセスして先に進みましょう。

//新しいワークブックを初期化する
Workbook book = new Workbook();
//ワークブックの最初のワークシートにアクセスする
Worksheet sheet = book.Worksheets[0];

ここでは、Excel ブックを初期化し、その中の最初のワークシートを選択します。このワークシートは、保護設定を適用し、編集可能な範囲を定義するキャンバスになります。

ステップ3: 編集範囲の許可コレクションにアクセスする

Aspose.Cellsには、AllowEditRangesは、ワークシートが保護されている場合でも編集可能な範囲のコレクションです。

//編集範囲の許可コレクションにアクセスする
ProtectedRangeCollection allowRanges = sheet.AllowEditRanges;

この行は、編集可能な範囲の特別なコレクションへのアクセスを設定します。これは、特定の範囲のみが保護をバイパスできるワークシート内の「VIP」領域と考えてください。

ステップ4: 保護範囲の定義と作成

次に、ワークシートに保護された範囲を定義して作成します。この範囲の開始セルと終了セルを指定します。

// ProtectedRange変数を定義する
ProtectedRange protectedRange;
//特定の名前とセル位置でコレクションに新しい範囲を追加します
int idx = allowRanges.Add("EditableRange", 1, 1, 3, 3);
protectedRange = allowRanges[idx];

このコードブロックでは:

  • EditableRange範囲に割り当てられた名前です。
  • 数字 (1, 1, 3, 3) は範囲の座標を定義します。つまり、セル B2 (行 1、列 1) からセル D4 (行 3、列 3) までの範囲を指します。

ステップ5: 保護範囲にパスワードを設定する

セキュリティを強化するために、保護された範囲にパスワードを設定できます。この手順により、保護の層が追加され、許可されたユーザーだけが範囲を編集できるようになります。

//編集可能な範囲にパスワードを設定する
protectedRange.Password = "123";

ここではパスワードを追加しました("123") を保護された範囲に追加します。このパスワード要件により、誰が変更できるかをさらに細かく制御できます。

ステップ6: ワークシートを保護する

編集可能な範囲が確立されたら、次のステップはワークシート全体を保護することです。この保護設定により、定義された範囲外のすべてのセルがロックされ、編集できなくなります。

//ワークシートに保護を適用し、他のすべてのセルを編集不可にします
sheet.Protect(ProtectionType.All);

Protectメソッドは、編集可能として定義した範囲を除いて、ワークシート全体をロックします。この手順では、基本的に、必要に応じて特定のセルにアクセスできる、安全な「読み取り専用」環境を作成します。

ステップ7: ワークブックを保存する

最後の手順は、ワークブックを保存して、設定を適用して保存することです。

// Excelファイルを指定されたディレクトリに保存します
book.Save(dataDir + "protectedrange.out.xls");

この手順では、手順 1 で設定したディレクトリに「protectedrange.out.xls」としてワークブックを保存します。これで、特定の範囲のみが編集可能な、完全に機能する安全な Excel ファイルができました。

結論

Aspose.Cells for .NET は、Excel ファイル内の保護と権限を管理する優れた方法を提供します。編集可能な範囲を作成することで、特定の領域へのアクセスを許可したままワークシートを保護できます。この機能は、いくつかのセルだけを開いて編集し、他のセルはロックしたままにしておく必要がある共同作業ドキュメントに特に役立ちます。

よくある質問

ワークシートに複数の編集可能な範囲を追加できますか?

はい、単に繰り返すだけで複数の範囲を追加できます。allowRanges.Add()新しい範囲ごとにメソッドを実行します。

保護された範囲を後で削除したい場合はどうすればいいですか?

使用してくださいallowRanges.RemoveAt()削除したい範囲のインデックスをメソッドに渡します。

範囲ごとに異なるパスワードを設定できますか?

そうです。それぞれProtectedRange独自のパスワードを設定できるため、きめ細かな制御が可能になります。

編集可能な範囲なしでワークシートを保護するとどうなりますか?

編集可能な範囲を定義しない場合、保護されるとワークシート全体が編集できなくなります。

保護された範囲は他のユーザーに表示されますか?

いいえ、保護は内部的です。保護された領域を編集しようとする場合にのみ、パスワードの入力が求められます。