スプレッドシートを他人と共有する場合、受け手に内容を変更されたくない、あるいは特定の内容だけを変更してもらい、残りの内容は変更しないでほしいという場合があります。ワークシートが他の人に編集されないように保護するために、Excel には保護機能が用意されています。この記事では、Spire.XLS for Java を使って、Java でプログラム的にワークブックまたはワークシートの保護と保護解除を行う方法について説明します。
- ワークブック全体をパスワードで保護する
- 特定の保護タイプでワークシートを保護する
- 指定した範囲のみの編集を許可する
- ワークシートの特定のセルをロックする
- パスワードで保護されたワークシートの保護を解除する
- 暗号化されたワークブックのパスワードを解除またはリセットする
Spire.XLS for Java をインストールします
まず、Spire. XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>12.8.4</version>
</dependency>
</dependencies>
ワークブック全体をパスワードで保護する
Excel ドキュメントをパスワードで暗号化することで、あなたや許可された人だけがそのドキュメントを読んだり編集したりできるようにすることができます。以下は、Spire.XLS for Java を使用してワークブックをパスワードで保護する手順です。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
- Workbook.protect() メソッドを使用して、ワークブックをパスワードで保護します。
- Workbook.saveToFile() メソッドを使用してワークブックを保存します。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class passwordProtectWorkbook {
public static void main(String[] args) {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込むc
workbook.loadFromFile("月間個人予算.xlsx");
//パスワードでワークブックを保護する
workbook.protect("e-iceblue");
//ワークブックを保存する
workbook.saveToFile("暗号化されたワークブック.xlsx", ExcelVersion.Version2016);
}
}
特定の保護タイプでワークシートを保護する
Excel 文書の閲覧は許可するが、ワークシートに加えることのできる変更の種類を制限したい場合、特定の保護タイプでワークシートを保護することができます。下の表は、SheetProtectionType クラスに含まれるさまざまな保護タイプの一覧です。
保護タイプ | 編集権限 |
Content | コンテンツを変更または挿入する。 |
DeletingColumns | 列を削除する。 |
DeletingRows | 行を削除する。 |
Filtering | フィルタを設定する。 |
FormattingCells | セルの書式を設定する。 |
FormattingColumns | 列の書式を設定する。 |
FormattingRows | 行の書式を設定する。 |
InsertingColumns | 列を挿入する。 |
InsertingRows | 行を挿入する。 |
InsertingHyperlinks | ハイパーリンクを挿入する。 |
LockedCells | ロックされたセルを選択する。 |
UnlockedCells | ロックされていないセルを選択する。 |
Objects | 描画オブジェクトを編集する |
Scenarios | 保存されたシナリオを編集する |
Sorting | データを並べ替える。 |
UsingPivotTables | ピボットテーブルとピボットチャートを使用する。 |
All | 保護されたワークシート上で上記の操作を行う。 |
None | 保護されたワークシート上で何もしない。 |
Spire.XLS for Java を使用して、特定の保護タイプでワークシートを保護する手順は次のとおりです。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、特定のワークシートを取得します。
- Worksheet.protect(String password, EnumSet.of <SheetProtectionType> options) メソッドを使用して、保護タイプでワークシートを保護します。
- Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.SheetProtectionType;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import java.util.EnumSet;
public class protectWorksheet {
public static void main(String[] args) {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("月間個人予算.xlsx");
//特定のワークシートを取得する
Worksheet worksheet = workbook.getWorksheets().get(0);
//権限パスワードと特定の保護タイプでワークシートを保護する
worksheet.protect("e-iceblue", EnumSet.of(SheetProtectionType.All));
//ワークブックを保存する
workbook.saveToFile("ワークシートの保護.xlsx", ExcelVersion.Version2016);
}
}
指定した範囲のみの編集を許可する
場合によっては、保護されたワークシートで選択された範囲をユーザーが編集できるようにする必要があるかもしれません。次の手順は、その方法を示しています。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、特定のワークシートを取得します。
- Worksheet.addAllowEditRange() メソッドを使用して、編集可能なセル範囲を指定します。
- Worksheet.protect(String password, EnumSet.of <SheetProtectionType> options) メソッドを使用して、保護タイプでワークシートを保護します。
- Workbook.saveToFile() メソッドを使用してワークブックを保存します。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.SheetProtectionType;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import java.util.EnumSet;
public class allowEditRanges {
public static void main(String[] args) {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("月間個人予算.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//編集可能な範囲を追加する
sheet.addAllowEditRange("範囲1", sheet.getRange().get("C5:C7"));
sheet.addAllowEditRange("範囲2", sheet.getRange().get("C10:C12"));
//パスワードと保護タイプでワークシートを保護する
sheet.protect("e-iceblue", EnumSet.of(SheetProtectionType.All));
//ワークブックを保存する
workbook.saveToFile("特定の範囲.xlsx", ExcelVersion.Version2016);
}
}
ワークシートの特定のセルをロックする
通常、ロックされたオプションは、ワークシート内のすべてのセルに対して有効になっています。そのため、セルまたはセル範囲をロックする前に、すべてのセルのロックを解除する必要があります。セルのロックは、ワークシートが保護されるまで有効でないことに注意してください。
Excel 特定のセルをロックする手順は次のとおりです。
- Workbook クラスのインスタンスを作成します。
- Workbook.loadFromFile() メソッドを用いて、Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(sheetIndex) メソッドを使用して、目的のワークシートを取得します。
- ワークシートの使用範囲にアクセスし、XlsRange.getStyle().setLocked() メソッドを使用して範囲内のすべてのセルをロック解除します。
- 特定のセルにアクセスし、XlsRange.getStyle().setLocked() メソッドを使用してそのセルをロックしています。
- XlsWorksheetBase.protect() メソッドを使用して、ワークシートを保護します。
- Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
- Java
import com.spire.xls.*;
import java.util.EnumSet;
public class lockCells {
public static void main(String []args){
//Workbookクラスのインスタンスを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("月間個人予算.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//ワークシートの使用中の範囲にあるすべてのセルのロックを解除する
CellRange usedRange = sheet.getRange();
usedRange.getStyle().setLocked(false);
//特定のセルをロックする
CellRange cells = sheet.getRange().get("C5:C6");
cells.getStyle().setLocked(true);
//ワークシートをパスワードで保護する
sheet.protect("e-iceblue", EnumSet.of(SheetProtectionType.All));
//ワークブックを保存する
workbook.saveToFile("セルのロック.xlsx", ExcelVersion.Version2016);
}
}
パスワードで保護されたワークシートの保護を解除する
パスワードで保護されたワークシートの保護を解除するには、Worksheet.unprotect() ソッドを呼び出して、パスワードを使用する必要があります。詳細な手順は以下の通りです。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
- Workbook.getWorksheets().get(index) メソッドを使用して、特定のワークシートを取得します。
- Worksheet.unprotect(String password) メソッドを使用して、保護を解除します。
- Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class unprotectWorksheet {
public static void main(String[] args) {
//Workbook クラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//保護されたワークシートを含む Excel ファイルを読み込む
workbook.loadFromFile("ワークシートの保護.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//指定したパスワードでワークシートの保護を解除する
sheet.unprotect("e-iceblue");
//ワークブックを保存する
workbook.saveToFile("ワークシートの保護の解除.xlsx", ExcelVersion.Version2016);
}
}
暗号化されたワークブックのパスワードを解除またはリセットする
暗号化されたワークブックのパスワードを削除またはリセットするには、それぞれ Workbook.unprotect() メソッドおよび Workbook.protect() メソッドを使用できます。以下の手順では、暗号化された Excel ドキュメントを読み込み、そのパスワードを削除または変更する方法を説明します。
- Workbook クラスのオブジェクトを作成します。
- Workbook.setOpenPassword() メソッドを使用して、ワークブックを開くためのパスワードを指定します。
- Workbook.loadFromFile() メソッドを使用して、暗号化された Excel ファイルを読み込みます。
- Workbook.unprotect() メソッドを使用して暗号化を解除します。または、Workbook.protect() メソッドを使用してパスワードを変更します。
- Workbook.saveToFile() メソッドを使用して、ワークブックを保存します。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class removeResetPassword {
public static void main(String[] args) {
//Workbookクラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//ワークブックを開くためのパスワードを指定する
workbook.setOpenPassword("psd-123");
//暗号化されたExcelファイルを読み込む
workbook.loadFromFile("暗号化されたワークブック.xlsx");
//ワークブックの保護を解除する
workbook.unProtect();
//パスワードをリセットする
//workbook.protect("newpassword");
//ワークブックを保存する
workbook.saveToFile("パスワードの削除・再設定.xlsx", ExcelVersion.Version2016);
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。