ロイス:
私はExcelのドロップダウンリストを作成しましたXSSFDataValidation
。
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("test sheet");
XSSFDataValidationHelper helper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) helper.createExplicitListConstraint(new String[] { "Checked", "Unchecked" });
CellRangeAddressList addressList = new CellRangeAddressList(0, 10, 0, 0);
XSSFDataValidation validation = (XSSFDataValidation)helper.createValidation(dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
私の質問は、次のいずれかです。
- それは空の値を禁止することは可能ですか?私が意味する、セルに値を入れて、ユーザーを強制します。私が試した
validation.setEmptyCellAllowed(false);
が、空の値を入れることも可能です。 - よりデフォルト値を定義する別の方法がありますか
cell.setCellValue("Unchecked");
?
前もって感謝します。
アクセル・リヒター:
使用してExcel
のデータ検証リストをない空のセルを禁止することができます。一連の 空白は無視するチェックボックスは、既存のセルが空の値に任意の値から変更を取得しないようにオフに。しかし、セルを選択Excel
してから押すとDel、全セルを削除していないだけで、セルの値を空にします。しかし、データの検証が既に存在していない細胞では動作しません。このように、あるExcel
問題とapache poi
するので、このに対して何もすることができませんapache poi
何ができないExcel
ことができません。
私たちが使用して行うことができる最高Excel
のデータの検証をして使用するには、apache poi
限り、ユーザーに伝えると、多くの場合、彼らはならないものを可能な限りされます。セルがエラーメッセージに追加選択されたときにそうするために、我々は、入力メッセージを表示することができます。
例:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;
class CreateExcelDataValidationList {
public static void main(String[] args) throws Exception {
//Workbook workbook = new HSSFWorkbook();
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(new String[]{"Checked", "Unchecked"}) ;
int lastRow = workbook.getSpreadsheetVersion().getLastRowIndex();
CellRangeAddressList addressList = new CellRangeAddressList(0, 10, 0, 0);
DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
validation.setEmptyCellAllowed(false);
validation.createPromptBox("Prompt", "Please select Cecked or Unchecked from dropdown list.");
validation.createErrorBox("Error", "Please select Cecked or Unchecked from dropdown list.");
if (workbook instanceof XSSFWorkbook) validation.setShowErrorBox(true);
if (workbook instanceof XSSFWorkbook) validation.setShowPromptBox(true);
sheet.addValidationData(validation);
FileOutputStream out = null;
if (workbook instanceof HSSFWorkbook) {
out = new FileOutputStream("CreateExcelDataValidationList.xls");
} else if (workbook instanceof XSSFWorkbook) {
out = new FileOutputStream("CreateExcelDataValidationList.xlsx");
}
workbook.write(out);
workbook.close();
out.close();
}
}
そして、いや、よりデフォルト値を定義する別の方法はありませんcell.setCellValue("Unchecked");
。でも中にデフォルト値がないのでそれはあるExcel
のデータ検証リスト。使用してExcel
そこのデータ検証リストを唯一の有効な値のリストです。このリストは、実際のセル値に対して、次にチェックされます。そして、実際のセルの値を使用して設定されますCell.setCellValue
。