【问题标题】:BLOCK the use of PASTE in EXCEL (Java and org.apache.poi)阻止在 EXCEL 中使用 PASTE(Java 和 org.apache.poi)
【发布时间】: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


【解决方案1】:

快速解决方法是在工作表中定义一个宏,当用户选择该工作表上的一个单元格时,该宏会将已知为空的单元格的内容复制到剪贴板:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  [XFD1048576].Copy
End Sub

请注意,这可能会惹恼用户,因为无论他们是否打算将某些内容粘贴到单元格中,它都会清空剪贴板。如果用户选择禁用宏或另存为 .xlsx,也很容易绕过。

【讨论】:

  • 我将尝试在 Java 中以用户无法拒绝脚本的方式创建它,而不是给出我在这里找到的解决方案 =^)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2016-08-04
  • 2015-04-27
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多