JAVA + POI> 有没有办法禁用/阻止系统/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);
我已经实现了各种锁定:
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 应用程序中的保存通信工具,这将是非常好的和安全的 =^)
最佳答案
一个快速解决方法是在工作表中定义一个宏,当用户选择该工作表上的单元格时,该宏会将已知为空的单元格的内容复制到剪贴板:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[XFD1048576].Copy
End Sub
请注意,这可能会惹恼用户,因为无论用户是否打算将某些内容粘贴到单元格或其他位置,它都会清空剪贴板。如果用户选择禁用宏或另存为 .xlsx,也很容易绕过。
关于java - 阻止在 EXCEL 中使用 PASTE(Java 和 org.apache.poi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44582798/