资料验证下拉列表 - 如何禁止空值?

罗伊斯:

我创建了一个下拉列表在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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档