当前位置: 首页 > 知识库问答 >
问题:

Apache POI Excel表保护和数据验证

隆功
2023-03-14

我正在使用Apache POI生成Excel文件(.xlsx格式)

我被两件事卡住了。

首先,我想在生成的excel文件中禁用一些功能,如格式化单元格。

我已经习惯了下面的代码来实现它(从Apache POI-How to protection sheet with options?)。

sheet.lockDeleteColumns();
sheet.lockDeleteRows();
sheet.lockFormatCells();
sheet.lockFormatColumns();
sheet.lockFormatRows();
sheet.lockInsertColumns();
sheet.lockInsertRows();
sheet.getCTWorksheet().getSheetProtection().setPassword(pwdBytes);
sheet.enableLocking();
workbook.lockStructure();

请告诉我如何只禁用少数功能,同时启用读写功能

第二,Excel文件中有一个日期列。我想在列级别应用一些日期验证(类似isValidDate)。

我尝试了XSSFDDataValidationHelper createCustomConstraint,但没有成功,验证对date列无效。当我打开生成的excel文件时,我在错误下面

XSSFDataValidationConstraint dateConstraint = (XSSFDataValidationConstraint) dvHelper
                .createCustomConstraint("ISNUMBER()");
        CellRangeAddressList dateAddressList = new CellRangeAddressList(0,
                10000, 2, 3);//1000rows and 3rd & 4th column
        DataValidation dateValidation = dvHelper.createValidation(
                dateConstraint, dateAddressList);
        dateValidation.setEmptyCellAllowed(true);
        dateValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
        dateValidation.createErrorBox("Error", "InValid Date.");
        dateValidation.setShowErrorBox(true);
        sheet.addValidationData(dateValidation);

请帮我解决这两个问题。

提前谢了。

共有1个答案

姚嘉容
2023-03-14

我相信你的问题有两个部分。

第一部分:-我相信锁定和保护是两码事。

sheet.protectSheet(String password);

将使工作表为只读。要设置锁选项,调用lockformatcells()和lockDeleteColumns()以及sheet.enableLocking()等函数就足够了。

DataValidationConstraint activationDateConstraint = validationHelper.createDateConstraint(DataValidationConstraint.OperatorType.BETWEEN, "=VLOOKUP($D3,Offices!$B$2:$D$6,3,FALSE)", "=TODAY()", "dd/mm/yy");
 类似资料:
  • 我是Android中Proguard的新手,想向社区提出一个问题。如果我在app gradle(模块)中将minify和shrink设置为true,这会保护我在Java类中定义的任何常数吗?

  • 我正在使用Spring Data Rest向我们的React前端应用程序公开JPA存储库。我还使用Spring Security性和JWT来保护REST API。 我的问题: 如何预防这样的异常用法? 使用Spring Data REST的最佳实践是什么?

  • 在< code>/users下,我有一些需要身份验证令牌的路由,还有一些不需要。为了实现这一点,我做了以下工作。 然后我按照以下方式安装这些路线。 当我向< code>/users发送POST时,它运行预期的路径,但是当< code>next()被调用时,< code > protected _ middleware 运行。这是因为它在标有“D”的行中找到了下一个< code>/users定义。

  • 6.9 CSRF和XSRF保护 6.9.1 简介 Cross-Site Request Forgery (CSRF) 跨站请求伪造是一种攻击,发生在具有恶意的网站,email,blog,即时消息,或者程序导致用户的web浏览器在一个受信用的网站去执行了某个有害的行为来获取当前用户的认证信息,详细了解请点击这里脑补。 在ASP.NET Web API官网也有如何实现的简短描述。 ABP框架尽可能的简

  • 我希望为Android应用程序构建一个SpringBootRESTAPI。一些特定于用户的资源应该受到OAuth2的保护。 我的问题是-我不想使用社交登录进行用户身份验证。我不想有我自己的用户数据库(SQL)与我自己的用户注册,允许用户使用用户名/密码登录。 我对Spring Boot还不熟悉,但是我已经在网上看到了很多例子,我可以看到Spring有很多有用的库用于用户处理和OAuth。 但是我似

  • 目的 使用 Secret 资源类型来存储 MySQL 数据库连接信息。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab05 创建 Secret1