首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在受保护的工作表中解锁特定的单元(使用Aspose)

是否可以在受保护的工作表中解锁特定的单元(使用Aspose)
EN

Stack Overflow用户
提问于 2013-08-01 14:30:11
回答 1查看 2K关注 0票数 3

我使用Aspose-Cells和java在我的系统中导出excel模板。

在这种特殊情况下,我将生成一个电子表格,其中有两个我想要保护的表。在其中一个,我需要让用户只编辑4个单元格。其余的都应该受到保护。最简单的实现应该是:

  1. 保护床单
  2. 解锁我想让用户编辑的每个单元格。

问题是,我搜索是为了检查是否有可能这样做(保护整个工作表,只解锁几个单元格),而这似乎是不可能的。请..。告诉我我错了,有办法做到这一点,否则我将不得不锁定所有现存的单元格,并且只解锁其中的4个。就我使用另一个库(PHPExcel)的经验而言,它在性能上似乎非常昂贵(我必须将它应用于1000行以上的40列,所以它确实很昂贵)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-05 07:13:26

使用Aspose.Cells for Java可以很容易地做到这一点。你可以的

  1. 首先锁定工作表中的所有列(所有单元格)。
  2. 解锁特定单元格或单元格范围

见下面的样本。

代码语言:javascript
复制
String dataDir = "D:\\data\\";
// Create or load workbook
Workbook book = new Workbook();

// Get the first worksheet
Worksheet sheet = book.getWorksheets().get(0);

Style style;
StyleFlag flag = new StyleFlag();

// First lock all columns
for (int iCol=0 ; iCol<255 ; iCol++)
{
    // Get style of the column
    style = sheet.getCells().getColumns().get(iCol).getStyle();
    // Apply locking to the style
    style.setLocked(true);
    flag.setLocked(true);
    sheet.getCells().getColumns().get(iCol).applyStyle(style, flag);
}

// Get the range of cells, which we want to unlock
Range rangeUnlocked = sheet.getCells().createRange("A1:D4");
// Add a new style
int styleIndex = book.getStyles().add();
Style styleUnlocked = book.getStyles().get(styleIndex);
// Unlock cells
styleUnlocked.setLocked(false);
rangeUnlocked.setStyle(styleUnlocked);

// Protect the sheet
sheet.protect(ProtectionType.ALL);

//Save the Excel file
book.save(dataDir + "protectedrange.xlsx");

我在Aspose工作,做一个开发人员,布道者。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17996913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档