我们通过zOffice收集的业务数据,如何进行分析统计呢?或许我们会想到数据透视表或者筛选的方式,这当然可以,但是在某些场景下,通过透视表统计有一定的难度,不够灵活,而zOffice SDK给我们提供了丰富的对于zOffice在线表格的操作,赋予了我们实现一些实用功能的能力,本文就是基于zOffice SDK开发了一个表格数据统计的功能实例,让我们一起看看zOfficeSDK强大的功能吧!
一、zOffice简介
zOffice提供云端Office能力,包括word、excel、ppt三类办公文档的在线协同编辑,通过专业级的文档能力,高效的协作体验,内容级的安全管控,丰富的集成开发接口,来赋能企业的业务系统,帮助业务系统实现文档在线预览和编辑,文档操作过程全部线上进行,完成在线办公的场景闭环。
zOffice链接:https://www.filez.com/zoffice
集成介绍文档:http:// https://lenovocloud.zbox.filez.com/l/a0OsO0
zOfficeSDK是针对zOffice在线文档而开发的函数库,可以让我们对在线文档进行一些实用的操作。
二、功能展示
1.功能界面
2.功能演示
(1)点击“上传文件”上传文件,然后在文件列表里找到要编辑的文件,点击“编辑”编辑
(2)然后在表格里面选择你要统计的区域(注意要框选上你的问题行),然后点击“获取统计结果”就能在左下角的结果展示区看见最后的统计结果。
(3)此外还提供了一些配置项,可以自己在配置项区域进行选择。
默认是合并结果,也就是把统计区域内的都当做一个问题的收集结果。通过组合不同的配置项得到自己想要的结果格式。
(4)还可以将生成的结果写入到一个新的sheet页里面,也是通过zOfficeSDK进行实现的。
三、功能实现
1.获取表格应用对象
要对表格进行操作,我们首先想到的就是要获取到这个表格应用对象,它里面包含了所有的sheet表格对象,因此我们需要获取到这个对象,而获取到这个对象的方式也很简单,我们只需要在Javascript文件中定义application变量即可。当然前提是我们已经在页面上挂载了在线表格,如上方功能展示的过程一样,然后SDK内置的函数就可以直接对这个变量进行赋值,赋值的内容就是整个表格应用对象。
var application;
2.获取当前正在编辑的sheet表格
var sheet = await application.ActiveWorkbook.getActiveSheet();
这样我们就获取到了当前正在编辑的sheet表格,这里先获取到了application的ActiveWorkbook,也就是当前表格文件,然后调用了getActiveSheet()方法来获取sheet表格对象。
3.获取框选的需要统计的范围
let range = null;
range = await sheet.getActiveRange();
通过调用sheet对象的getActiveRange()对象,我们就获取到了要统计的区域这个对象。之后就是将获取这个对象里每个单元格的值,这样我们就能进行统计逻辑的代码编写了。
//这四个变量是整个要统计区域的起始行,起始列,结束行,结束列
var beginRow = range.row;
var endRow = range.endRow;
var beginColumn = range.column;
var endColumn = range.endColumn;
//这个是将range对象转化为二维数组,方便进行每个单元格里值的获取
var valuesArray = await range.getValues();
通过getValues()的方式我们就能获取到要统计的范围里每个单元格的值。这样我们就能进行整个统计逻辑的构建,后面就是通过html,css,javascript完成整个逻辑并且将结果展示在结果展示区。
4.将结果在新的sheet页里展示
第一部分的功能展示提到了将生成的结果写入到一个新的sheet页里面整个功能,其实现如下:
addSheetBtn.addEventListener('click',asyncfunction(){
var contentArray = showContent.split("\n");//showContent是统计结果的字符串形式,这里进行分割var len = contentArray.length;
var afterProcessContent = [];
for(let i = 0; i < len; i++){
if(contentArray[i]){
var data = contentArray[i].split(":");
afterProcessContent.push(data);
}
}
//这里使用newSheet的方法生成新的sheet页
application.ActiveWorkbook.newSheet("统计结果");
//获取新生成的sheet页
const sheet = await application.ActiveWorkbook.getSheetByName("统计结果");
await sheet.activate();
//在每次写入结果前,清空整个sheet的内容
const beforInsertRange = await sheet.getActiveRange();
await beforInsertRange.clearContent();
var beginARow = 1;
var endArow = afterProcessContent.length;
var beginAcolumn = 1;
var endAcolumn = 2;
var acrange = sheet.getRange(beginARow,beginAcolumn,endArow,endAcolumn);
await sheet.setActiveRange(acrange)
const range = await sheet.getActiveRange();
//这里调用setValues()方法将结果写入新生成的sheet页里面await range.setValues(afterProcessContent);
//设置左边列文本的水平对齐方式const leftRange = await sheet.getRange(beginARow,1,endArow,1);
await leftRange.setAlignment('left');
//设置右边列文本的水平对齐方式const rightRange = await sheet.getRange(beginARow,2,endArow,2);
await rightRange.setAlignment('right');
})
四、总结
这就是整个功能使用zOfficeSDK的一些接口的概述,可以看到通过zOfficeSDK我们实现了数据统计这个功能,通过这个例子我们也能看到zOfficeSDK的功能强大之处,我们能做的功能也不仅仅只是一个数据统计功能,还有许多的可能性,通过SDK我们可以打造属于自己的“武器库”,通过这些“武器”提高我们的办公效率!