マイクロソフトExcelでは、特定のセルをロックすることで、その中のデータや数式が他のユーザーによって変更されるのを防ぐことができます。この記事では、無料のJavaライブラリを使ってJavaでプログラム的にExcelのセルをロックする方法を説明します。
無料APIのインストール(2つの方法)
Java で Excel ファイルを処理するために、Free Spire.XLS for Java ライブラリを使用することができます。このライブラリをインストールする方法は 2 つあります。
方法 1: 以下のリンクから無料のライブラリをダウンロードして解凍し、その後、Spire.Xls.jar ファイルを依存関係としてプロジェクトに追加します。
方法2: 次の構成をpom.xmlに追加することで、jarの依存関係を直接Mavenプロジェクトに追加します。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>5.3.0</version>
</dependency>
注:この無料のライブラリには、一定のページ制限があります。
Excelのセルをロックする手順とJavaコード
通常、ワークシート内のすべてのセルにはロックオプションが有効になっています。そのため、特定のセルやセル範囲をロックする前に、すべてのセルをロック解除する必要があります。また、ワークシートが暗号化されるまでセルのロックは有効にならないことにご留意ください。
詳細な手順は以下の通りです:
- Excel ファイルを読み込み、その中の特定のワークシートを取得します。
- ワークシート内で使用されているセル範囲にアクセスし、
XlsRange.getStyle().setLocked()
メソッドを使ってその範囲内のすべてのセルをロック解除します。 - 特定のセルにアクセスし、
XlsRange.getStyle().setLocked()
メソッドを通じてそれらをロックします。 -
XlsWorksheetBase.protect()
メソッドを使って、ワークシートをパスワードで保護します。 -
saveToFile()
メソッドを使って結果ファイルを保存します。
Javaコードのサンプル:
import com.spire.xls.*;
import java.util.EnumSet;
public class LockCells {
public static void main(String []args){
// Excel ファイルを読み込む
Workbook workbook = new Workbook();
workbook.loadFromFile("input.xlsx");
// 最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
// ワークシートの使用範囲内のすべてのセルをロック解除する
CellRange usedRange = sheet.getRange();
usedRange.getStyle().setLocked(false);
// 特定のセルをロックする
CellRange cells = sheet.getRange().get("D2:E10");
cells.getStyle().setLocked(true);
// ワークシートをパスワードで保護する
sheet.protect("abc123", EnumSet.of(SheetProtectionType.All));
// 結果ファイルを保存する
workbook.saveToFile("LockCells.xlsx", ExcelVersion.Version2016);
}
}
この無料のJava APIを使ったさらなるExcel処理機能については、以下をご確認ください: