Excelのデータ検証機能は、特定のセルに入力できるデータ、または入力すべきデータを制限することができます。例えば、Excelで商品の顧客満足度の指数を収集する場合、1~10までの任意の数値を入力してもらうことができます。
この記事では、無料のFree Spire.XLS for Javaを使用して、Excelのセルに各種データ検証(数値検証、文字長検証、日付検証、時刻検証、リスト検証など)を適用する方法と、指定したセル内のデータ検証を解除する方法について説明します。
【依存関係の追加】
この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。
<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.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Free Spire.XLS for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Xls.jarファイルを依存関係としてプロジェクトにインポートしてください。
Excelのセルにデータ検証を適用する
Spire.XLS for Javaを使用して、セルに様々な種類のデータ検証を追加する手順を説明します。
- Workbook クラスのオブジェクトを作成します。
- Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
- Worksheet.getCellRange() メソッドを使用して特定のセル範囲を取得し、データ検証を追加します。
- CellRange.getDataValidation().setAllowType() メソッドを使用して、セルで許可されるデータ型を設定します。データ型はInteger、Time、Date、TextLength、Decimalなどが選択可能です。
- CellRange.getDataValiation().setCompareOperator() メソッドを使用して、比較演算子を設定します。比較演算子には、Between、NotBetween、Less、Greater、Equalがあります。
- CellRange.getDataValidation().setFormula1() と CellRange.getDataValidation().setFormula2() メソッドを使用して、データ検証用の数式を 1 つまたは 2 つ設定します。
- CellRange.getDataValidation().setInputMessage() メソッドを使用して入力プロンプトを設定します。
- Workbook.saveToFile() メソッドを使用して、ワークブックをExcelファイルに保存します。
Java
import com.spire.xls.*;
public class applyDataValidation {
public static void main(String[] args) {
//Workbook クラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//セルにテキストを挿入する
sheet.getCellRange("B2").setText("数字を入力してください:");
sheet.getCellRange("B4").setText("日付を入力してください:");
sheet.getCellRange("B6").setText("テキストを入力してください:");
sheet.getCellRange("B8").setText("リストから項目を選択してください:");
sheet.getCellRange("B10").setText("時間を入力してください:");
//C2に数値検証を追加する
CellRange rangeNumber = sheet.getCellRange("C2");
rangeNumber.getDataValidation().setAllowType(CellDataType.Integer);
rangeNumber.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeNumber.getDataValidation().setFormula1("1");
rangeNumber.getDataValidation().setFormula2("10");
rangeNumber.getDataValidation().setInputMessage("1〜10までの数字を入力してください。");
rangeNumber.getStyle().setKnownColor(ExcelColors.BlueGray);
//C4に数値検証を追加する
CellRange rangeDate = sheet.getCellRange("C4");
rangeDate.getDataValidation().setAllowType(CellDataType.Date);
rangeDate.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeDate.getDataValidation().setFormula1("2010/1/1");
rangeDate.getDataValidation().setFormula2("2020/12/31");
rangeDate.getDataValidation().setInputMessage("2010/1/1~2020/12/31の間で日付を入力してください。");
rangeDate.getStyle().setKnownColor(ExcelColors.BlueGray);
//C6に数値検証を追加する
CellRange rangeTextLength = sheet.getCellRange("C6");
rangeTextLength.getDataValidation().setAllowType(CellDataType.TextLength);
rangeTextLength.getDataValidation().setCompareOperator(ValidationComparisonOperator.LessOrEqual);
rangeTextLength.getDataValidation().setFormula1("5");
rangeTextLength.getDataValidation().setInputMessage("5文字以内で入力してください。");
rangeTextLength.getStyle().setKnownColor(ExcelColors.BlueGray);
//C8に数値検証を追加する
CellRange rangeList = sheet.getCellRange("C8");
rangeList.getDataValidation().setValues(new String[] { "米国", "カナダ", "英国", "ドイツ" }) ;
rangeList.getDataValidation().isSuppressDropDownArrow(false);
rangeList.getDataValidation().setInputMessage("リストから項目を選択してください。");
rangeList.getStyle().setKnownColor(ExcelColors.BlueGray);
//C10に数値検証を追加する
CellRange rangeTime = sheet.getCellRange("C10");
rangeTime.getDataValidation().setAllowType(CellDataType.Time);
rangeTime.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeTime.getDataValidation().setFormula1("9:00");
rangeTime.getDataValidation().setFormula2("12:00");
rangeTime.getDataValidation().setInputMessage("9:00〜12:00の間で時間を入力してください。");
rangeTime.getStyle().setKnownColor(ExcelColors.BlueGray);
//列2の幅の自動調整を設定する
sheet.autoFitColumn(2);
//列3の幅を設定する
sheet.getColumns()[2].setColumnWidth(20);
//ファイルに保存する
workbook.saveToFile("データ検証の適用.xlsx", ExcelVersion.Version2016);
}
}
【結果のExcelファイル】
Excelのセルからデータ検証を削除する
以下は、Spire.XLS for Javaを使用して、指定したセルのデータ検証を解除する手順です。
- Workbook クラスのオブジェクトを作成します。
- Workbook.loadFromFile() メソッドを使用して、データ検証を含むExcelファイルを読み込みます。
- Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
- 検証を除去するセルを配置する矩形の配列を作成します。
- Worksheet.getDVTable().remove() メソッドを使用して、選択したセルからデータ検証を削除します。
- Workbook.saveToFile() メソッドを使用して、ワークブックをExcelファイルに保存します。
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import java.awt.*;
public class removeDataValidation {
public static void main(String[] args) {
//Workbook クラスのオブジェクトを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("データ検証の適用.xlsx");
//最初のワークシートを取得する
Worksheet worksheet = workbook.getWorksheets().get(0);
//ワークシートの範囲を特定するための矩形の配列を作成する
Rectangle[] rectangles = new Rectangle[]{
//1つの矩形(columnIndex, rowIndex)は特定のセルを指定し,列または行のインデックスは0から始まる
//セル範囲を指定するには、Rectangle(startColumnIndex, startRowIndex, endColumnIndex, endRowIndex) を使用する
new Rectangle(2,1),
new Rectangle(2,3),
new Rectangle(2,5),
new Rectangle(2,7),
new Rectangle(2,9)
};
//選択したセルからデータ検証を削除する
worksheet.getDVTable().remove(rectangles);
//ワークブックをExcelファイルに保存する
workbook.saveToFile("データ検証の削除.xlsx");
}
}