【发布时间】:2017-11-18 20:24:38
【问题描述】:
JAVA + POI > 有没有办法无法/阻止 System / Excel PASTE 命令。或者在手动输入时给出错误并拒绝。
我使用 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);
我已经实现了各种 LOCKING:
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);
将 Excel 作为我的 JavaFX 应用程序中的保存通信工具提供的帮助会非常棒且安全 =^)
【问题讨论】:
-
VBA
Worksheet.SelectionChange宏清除剪贴板是否能解决问题? -
见stackoverflow.com/questions/37802988/…,“Excel 作为保存通讯工具”:不,不是。
Excel是一种可能的数据导出格式。但是要依赖Excel作为数据输入源或者数据交换格式呢?你不应该这样做。当然只是我的拙见。 -
嗨 @jsheeran 和 Axel Richter 感谢 cmets。我的工作人员沉迷于 Excel 用于数据收集、交流和报告。我既喜欢又讨厌 Excel。它是一个功能强大但极其草率的工具,但无论如何我们必须找到一种方法以最好的方式处理它,并将其与他们的工作方式相结合 =^)。复制粘贴是在工作表打开时发生的,所以如果我在开始时清除它,伤害仍然会发生。也许 jsheeran 你可以分享一些可以工作的代码或宏,这样我就可以测试它了。
标签: java excel apache-poi paste