我想要在调用postProtectWorkbook接口的时候对excel中的所有sheet进行只读保护,而不是currentSheet,我应该加什么参数,目前我看只有一个setProtectCurrentSheet方法可以设置一个sheet
$uploadRequest = new UploadFileRequest();
$uploadRequest->setUploadFiles($filePath);
$uploadRequest->setPath('/');
$result = $this->api->uploadFile($uploadRequest);
if ($result->getUploaded()) {
$sheetProtection = new Protection();
$func = $sheetProtection::setters();
foreach ($func as $key => $value) {
$sheetProtection->$value('false');
}
$protection = new ProtectWorkbookRequest();
$protection->setProtectWorkbookStructure('ALL');
$protection->setAwaysOpenReadOnly('true');
$protection->setProtectCurrentSheet($sheetProtection);
$request = new PostProtectWorkbookRequest();
$request->setName($this->fileName);
$request->setProtectWorkbookRequest($protection);
$result = $this->api->postProtectWorkbook($request);
}
这是我的代码
请您看我的代码中,是设置了这个参数为true的,但是我在打开文件的时候仍然询问了我是否以只读方式打开这个文件,我可以选择否,这样我仍然是可以编辑文件的。
@zhaolin ,
目前没有设置所有sheet为只读保护的方法。需要依次设置Excel文件里的工作表为active sheet,然后执行只读保护方法。
如果你需要一次将所有的工作表设置为只读保护, 我们可以开发新的功能来实现。
好的,我了解了,非常感谢,我还有一个问题,我在设置水印的时候并不能设置水印铺满整个sheet,而是只有一个水印在上面,请问有办法可以设置铺满的水印吗?是什么参数,或者是另外的什么接口呢
@zhaolin ,
目前,图一是我们当前实现的效果, 你希望的结果应该是近似图二的样式吧,但是图二的实现只是换了一更大的图片,真正铺满整个工作表目前是不能实现的,当前我们只能实现这个图片平铺这个工作表的数据区域。
顺便说一下,我将你的两个问题 创建了两个任务,将在下一个版本实现。
图一
图二
好的,非常感谢,我需要的就是图一的效果,我已经找到了该接口,另外为所有sheet添加只读保护的方式我也已经采用其他方法实现了,如果后续你们有一次能实现所有sheet添加保护的方法,我非常感谢
@zhaolin
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.
Issue ID(s): CELLSCLOUD-12921,CELLSCLOUD-12922
You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.