java - 阻止在 EXCEL 中使用 PASTE(Java 和 org.apache.poi)

标签 java excel apache-poi paste

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/

相关文章:

arrays - 如何将具有值的数组放入一列

Excel VBA @SQL 字符串过滤器

java - 使用 apache poi 合并和对齐中心单元格

java - 我使用 apache poi 创建 Excel 文件。但是当我打开 Excel 文件时,它说格式错误的文件需要恢复

java - Intellij IDEA 中的热键用于执行操作

java - java中的导出和导入函数

vba - 使用VBA将图片插入Excel并保持宽高比不超过尺寸

java.lang.NoClassDefFoundError : (Atlassian JIRA)

java - 由于方法名称,JUnit 测试失败

java - 我在第一次运行时创建的属性文件在第二次运行时被清空