通过zOffice SDK实现灵活的数据统计

news2024/11/24 22:37:16

我们通过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我们可以打造属于自己的“武器库”,通过这些“武器”提高我们的办公效率!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用autossh实现内网穿刺

前言 需要在客户公司部署一套系统&#xff0c;要求是能公网访问&#xff0c;但是客户那边没有公网IP。所以打算打算使用autossh实现内网穿刺。 准备 硬件&#xff1a; 我需要一台有独立ip的公网服务器82.82.82.82&#xff08;充当穿刺服务器&#xff09;&#xff0c;一台能…

EasyExcel时间处理时的bug,希望阿里不要不识好歹,尽快修复这个bug。

一、情况描述 我使用阿里的EasyExcel进行数据导入&#xff0c;但是我发现它录入的时间和表格上的数据不一样。Excel中录入的时间是7:30:00和21:20:00&#xff0c;但是实际读取的数据是7:30:00 上午&#xff0c;9&#xff1a;20&#xff1a;00 下午&#xff0c;导致我数据录入失…

【脚本工具】Python在MySQL批量造测试数据

测试过程中经常需要批量造一批数据&#xff0c;主要通过fake库来造测试数据&#xff0c;支持多国语言&#xff0c;注意使用的时候&#xff0c;各国具体情况 一、安装Faker 1、官方下载安装&#xff1a; URL&#xff1a;https://pypi.org/project/Faker/ 2、通过pip命令安装 …

5、Mysql事务原理

一、概述 事务&#xff1a;一组操作要么全部成功&#xff0c;要么全部失败&#xff0c;目的是为了保证数据最终的一致性。 数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能就会导致我们说的脏写、脏读、不可…

群辉助手Synology Assistant使用教程

下载 百度网盘链接直接下载即可 链接&#xff1a;https://pan.baidu.com/s/1XlQEcTCqBTsOgp-761jdOg?pwd5vyf 提取码&#xff1a;5vyf --来自百度网盘超级会员V5的分享 安装 直接双击安装&#xff0c;等待安装完成 能搜索到上图应用说明安装成功 使用 点击搜索按钮&…

浅谈餐饮业油烟在线监控系统的设计与研究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;现阶段餐饮行业发展十分迅速&#xff0c;为了更好地提升餐饮油烟的监控力度&#xff0c;强化餐饮业油烟在线监控系统的设计成为重中之重。油烟在线监控系统的强化可以降低油烟的排放量&#xff0c;同时在排烟的…

【赠书】算力经济概念提出者的倾力之作,深刻诠释超级计算的未来!

目录 1.内容简介2.读者受众3.图书目录 如果说蒸汽机是工业革命的引擎&#xff0c;发电机是电气时代的引擎&#xff0c;那么计算机就是数字信息时代的引擎&#xff0c;而超级计算机是引领科学计算创新、攀登新高峰的引擎。 现在&#xff0c;公有云的发展如火如荼&#xff0c;云…

八、云尚办公系统-管理端-审批设置

云尚办公系统&#xff1a;管理端-审批设置 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步&#xff01;&#xff01;…

Android处理内存泄漏

么是内存泄漏&#xff1a; 在Android开发过程中&#xff0c;当一个对象已经不需要再使用了&#xff0c;本该被回收时&#xff0c;而另个正在使用的对象持有它引用从而导致它不能被回收&#xff0c;这就导致本该被回收的对象不能被回收而停留在堆内存中&#xff0c;内存泄漏就产…

STM32外设系列—HC-05(蓝牙)

文章目录 一、蓝牙简介二、使用方法2.1 接线2.2 AT指令 三、蓝牙APP四、实战项目4.1 添加文件4.2 配置需要传递的参数4.3 获取返回值4.4 发送光照强度4.5 控制程序4.6 手机端页面设计4.6.1 新建调试工程4.6.2 设置通信变量4.6.3 编辑控件4.6.4 添加LED控制开关4.6.5 添加光照强…

Vue 时间转换

文章目录 将秒转换成简单时间格式方式一 表格渲染方式二 js转换 将时间转换为字符串方式一 年、月、日、时、分、秒、星期等信息方式二 返回多久之前的时间 将秒转换成简单时间格式 方式一 表格渲染 element-ui 表格为例&#xff0c;duration 单位为秒 <el-table-column …

Openresty原理概念篇(十一) 为什么要避免使用 NYI?

一 JIT编译器的死穴&#xff1a;为什么要避免使用 NYI ? ① 问题引入 1) 那么到底有哪些操作可以被 JIT,哪些不能呢?2) 怎样才可以避免写出不能被 JIT 的代码呢? ② 上节回顾 ③ 什么是 NYI&#xff1f; NYI函数 NYI完整的列表 ④ NYI列表中string库函数 说明&am…

sonarqube安装以及jenkins集成sonarqube

一、sonarqube安装 docker方式安装sonarqube docker 方式安装是最简便的&#xff0c;我选择了这个安装方式 1、下载镜像 docker pull postgres:latest docker pull sonarqube2、 创建挂载目录 #用于postgres的挂载目录 mkdir -p /opt/postgres/postgresql mkdir -p /opt/po…

慧博云通加入飞桨技术伙伴计划,共同推动企业AI应用创新

近日&#xff0c;慧博云通子公司慧博云通&#xff08;上海&#xff09;软件技术有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将共同探索人工智能多场景创新应用&#xff0c;为企业提供智能化解决方案。 慧博云通 慧博云通科技股份有限公司&#xff08;股票代码&#x…

Pytorch分布式训练(一)

参考文献&#xff1a; 33、完整讲解PyTorch多GPU分布式训练代码编写_哔哩哔哩_bilibili pytorch进程间通信 - 文举的博客 (liwenju0.com) 前言 2023年&#xff0c;训练模型时&#xff0c;使用DDP&#xff08;DistributedDataParallel&#xff09;已经成为Pytorch炼丹师的标准…

sourcetree打开就闪退

1、问题分析 一直未出现如题描述情况&#xff0c;今早到公司可能是异常重启或者系统更新的愿意导致没有正常关机&#xff0c;出现了此种情况 2、问题解决 注&#xff1a;本文sourcetree安装在win11系统&#xff0c;win10等系统目录大同小异 ① (若快捷方式在桌面步骤①省略…

你的服务器还安全吗?用户数据是否面临泄露风险?

一系列严重的网络安全事件引起了广泛关注&#xff0c;多家知名公司的服务器遭到黑客挟持&#xff0c;用户的个人数据和敏感信息面临泄露的风险。这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性&#xff0c;提醒着企业和个人加强对网络安全的重视。 一、入侵案例1.1 蔚来数据…

复习Javascript第二章

JavaScript 函数 JavaScript 函数是被设计为执行特定任务的代码块。 JavaScript 函数会在某代码调用它时被执行。 function myFunction(p1, p2) {return p1 * p2; // 该函数返回 p1 和 p2 的乘积 } JavaScript 函数语法 JavaScript 函数通过 function 关键词…

爆款视频生成器小程序源码搭建方案

爆款视频生成器是一种可以帮助用户快速制作出高质量视频的工具。它可以根据用户提供的素材、模板和音乐等要素&#xff0c;自动生成一个精美的视频。这种工具可以大大节省用户的时间和精力&#xff0c;同时还能够提高视频制作的效率和质量&#xff0c;使视频更易于被观众接受和…

开发一个商城小程序有哪些功能?

✔️近年来&#xff0c;随着微信小程序的不断优化和推出&#xff0c;越来越多的商家开始选择使用小程序作为销售渠道。商城小程序作为一种便捷、快速、高效的销售渠道&#xff0c;已经成为商家们打造线上商城的重要手段。商城小程序拥有着丰富的功能&#xff0c;可以满足不同商…