JAVA + POI>是否有办法无法/阻止System/Excel PASTE命令。或者在输入手动输入时给出错误并拒绝。在EXCEL中使用PASTE(Java和org.apache.poi)
我用Java 8和org.apache.poi构建这个Excel文件(也许另一个库会工作)。
我实现了各种限制和验证:
constraint =validationHelper.createExplicitListConstraint(new String[]{"0","1","2","3","4","5","6","7","8","9"});
addressList = new CellRangeAddressList(0,999,0,0);
dataValidation = validationHelper.createValidation(constraint, addressList);
dataValidation.setShowErrorBox(true);
sheet.addValidationData(dataValidation);
我已经inplemented各种锁定:
sheet.lockObjects(true);
sheet.lockDeleteColumns(true);
sheet.lockDeleteRows(true);
sheet.lockFormatCells(true);
sheet.lockFormatColumns(true);
sheet.lockFormatRows(true);
sheet.lockInsertColumns(true);
sheet.lockInsertRows(true);
sheet.enableLocking();
workbook.lockStructure();
但目前仍处于可以粘贴任何你想要从内存中粘贴一个单元格。甚至当我锁与下拉限制:
Name name = workbook.createName();
name.setNameName("ValidationRange");
String reference = addressList.getCellRangeAddress(0).formatAsString("SHEET", true);
name.setRefersToFormula(reference);
帮助将是巨大的,在我的JavaFX应用程序安全Excel作为一种节省通信工具= ^)
将VBA'Worksheet.SelectionChange'宏清除剪贴板解决问题? – jsheeran
请参阅https://stackoverflow.com/questions/37802988/apache-poi-how-to-restrict-the-user-to-clear-the-data-validations-in-excel-she/37817030#37817030,“Excel作为保存沟通工具“:不,它不是。 'Excel'是*一个*可能的数据*导出*格式。但要依靠'Excel'作为数据输入源还是数据交换格式?你不应该这样做。当然只有我的愚见。 –
Hi @jsheeran和Axel Richter感谢您的评论。我的工作中的人沉迷于Excel,用于数据收集,沟通和报告。我喜欢并且同时讨厌Excel。这是一个功能强大但非常草率的工具,但无论如何,我们必须找到一种最好的方式来处理它,并将它与他们的工作方式= ^)结合起来。复制粘贴在表单打开时发生,所以如果我在开始时清除它,伤害仍将完成。也许jsheeran你可以分享一些可以工作的代码或宏,这样我就可以测试它。 – irJvV