pageoffice6控制在线打开的Excel编辑区域(局部编辑)

转发:控制Excel编辑区域(局部编辑)

# 控制Excel编辑区域(局部编辑)

注意

本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

在实际项目开发中,以下场景可能会用到Excel局部编辑功能:

  • 财务报表:会计人员可能需要更新特定的会计科目,而审计人员则可能需要访问所有区域进行审核。
  • 课程规划:不同教师可能负责编辑各自课程的详细信息,而教务管理部门则负责整体课程安排的审核和调整。
  • 质量控制:质量检查员可能只能编辑产品质量检查的结果,而质量管理部门则可以访问所有质量控制相关的数据。
  • 广告投放:广告策划人员可能需要编辑广告内容和投放策略部分,而财务人员则可能需要编辑广告预算和成本部分。
  • 资源分配:资源管理人员可能需要编辑资源分配和利用部分,而项目团队成员则可以更新自己的工作进度和资源消耗。
  • 市场销售:不同部门的管理人员负责各自部门的产品销售数据。
  • 其他场景...

控制编辑区域实现局部编辑的功能,通常用在以下两个方面:

  • 数据输入:实际项目中Excel文档的表格结构往往是很复杂的,而且Excel文件的编辑制作过程也很费时费力,如果用户在填写表格数据时,不经意间改动了表格的样式、公式或结构,轻则影响文档的打印效果,重则就可能会造成严重的数据错误。如果不控制Excel文件的编辑区域,那么用户在Excel中录入数据时就只能低效率地、谨小慎微地进行编辑,所以控制了用户的编辑区域,不但可以规范用户的操作,防止用户录入数据时有意无意对文件造成“破坏”,而且可以让用户更高效地进行数据录入。
  • 数据保护:在需要对工作表进行部分保护,防止无关人员修改重要数据时,可以使用局部编辑功能限制编辑区域。

以下我们就以市场销售场景来举例说明,PageOffice是如何使用局部编辑功能实现“不同部门经理只能编辑各自部门销售数据”需求的。需求概述:A部门经理负责A产品的销售,所以打开Excel文件之后只能编辑A产品的销售计划和实际完成数据,文件的其他单元格全部处于只读状态;B部门经理负责B产品的销售,打开Excel文件后只能填写B产品的销售计划和实际完成数据,其他单元格只读。

在实际项目中,Excel文件会填写大量的单元格数据,本文为了简明扼要,所以仅以有限的几个单元格来举例说明。

首先,制作一个产品销售表,比如:D:\test.xlsx,里面包含了产品名称、计划完成、实际完成等数据项,如下图所示:

然后,通过代码控制,A部门经理登录之后只能编辑"C4:D6"区域的单元格,其他部分只读;B部门经理登录之后只能编辑"C7:D9"区域的单元格,其他部分只读。

# 后端代码

在后端编写代码创建Workbook对象,根据登录用户的不同,实现控制Excel文件的可编辑区域。

String userName = request.getParameter("userName");
Workbook wb = new Workbook();
Sheet sheet = wb.openSheet("Sheet1");
Table tableA = sheet.openTable("C4:D6");
Table tableB = sheet.openTable("C7:D9");
tableA.setSubmitName("tableA");
tableB.setSubmitName("tableB");
//A部门经理登录后,只能编辑tableA的产品数据
if (userName.equals("zhangsan")) {
    tableA.setReadOnly(false);
    tableB.setReadOnly(true);
}
//B部门经理登录后,只能编辑tableB的产品数据
else {
    tableA.setReadOnly(true);
    tableB.setReadOnly(false);
}
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setWriter(wb);
poCtrl.setSaveFilePage("SaveFile.jsp");
poCtrl.webOpen("D:\\test.xlsx", OpenModeType.xlsSubmitForm, userName);

# 前端代码

本示例无前端关键代码。

posted @ 2024-03-27 11:32  爱吃苹果皮  阅读(21)  评论(0编辑  收藏  举报