java-如何根据Apache POI中另一个单元格中的值来禁用单元格中的编辑?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何根据Apache POI中另一个单元格中的值来禁用单元格中的编辑?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2142字,纯文字阅读大概需要4分钟。
内容图文
![java-如何根据Apache POI中另一个单元格中的值来禁用单元格中的编辑?](/upload/InfoBanner/zyjiaocheng/669/952553b30e654ae38dae12548aeafa84.jpg)
我有一个要求,我只需要询问用户一个标志,如果该标志为真,我需要他在该行的另一个单元格中输入一个数字.
如果为假,则该单元格不可编辑.
我知道如何对单元格设置限制,但是我对这种条件限制一无所知.
解决方法:
如果在apache poi分析工作表时A列中的标志已经存在,则如果A列中为True,则CellStyle.setLocked可以设置为False.因此,如果工作表受到保护,则这些单元格将不会被锁定,并且可编辑.
但是,如果将在Excel GUI中更改A列中的True或False,则这是不可能的,因为在更改A列中的值时它不会有条件地更改.为此,必须有条件地格式化单元格锁定.但是这种可能性不存在,至少在不使用VBA的情况下不存在.
然后,只有数据验证才可行,该数据验证将在B获得值时检查A是否为真,否则将发出警报.可以使用apache poi设置Data Validations.
例:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;
public class CreateExcelDataValidationIfATrueThenB {
public static void main(String[] args) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint = dvHelper.createCustomConstraint("AND(A1, B1<>\"\")");
CellRangeAddressList addressList = new CellRangeAddressList(-1, -1, 1, 1);
DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
validation.createPromptBox("For column B:", "If column A is True, then please put content in column B, else not.");
validation.setShowPromptBox(true);
validation.createErrorBox("Bad Value", "Please put content in column B only if column A is True, else not!");
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
sheet.createRow(0).createCell(0).setCellValue(true);
sheet.createRow(1).createCell(0).setCellValue(false);
sheet.createRow(2).createCell(0).setCellValue(false);
sheet.createRow(3).createCell(0).setCellValue(true);
workbook.write(new FileOutputStream("CreateExcelDataValidationIfATrueThenB.xlsx"));
workbook.close();
}
}
如上所述,在更改A列中的单元格时,可以使用VBA事件对单元格进行条件格式化.但是apache poi不提供创建VBA代码的功能.因此,如果这是必要条件,则必须使用已经包含那些宏的Excel模板.
内容总结
以上是互联网集市为您收集整理的java-如何根据Apache POI中另一个单元格中的值来禁用单元格中的编辑?全部内容,希望文章能够帮你解决java-如何根据Apache POI中另一个单元格中的值来禁用单元格中的编辑?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。