返回顶部
首页 > 资讯 > 前端开发 > JavaScript >小程序中实现excel数据的批量导入的示例代码
  • 318
分享到

小程序中实现excel数据的批量导入的示例代码

2024-04-02 19:04:59 318人浏览 薄情痞子
摘要

目录1 建立数据源2 编制入库的代码2.1 创建低码方法2.2 低码中调用连接器3 最终的代码4 总结我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,

我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,更重要的是我们需要将采集的数据积累下来,变成企业的数字资产。

积累数据最好的方式就是把数据存入数据库,低码工具除了有可视化编程的便利外,还提供了线上的文档型数据库。文档数据库比传统数据库的优势是,文档数据库的返回结构是JSON格式,直接就可以在前端进行渲染。关系型数据库还得通过代码进行转译。

另外一个方面是文档数据库的类型更丰富,有附件、富文本、自动编号、数组、对象、图片、地理位置这些偏业务类型的字段。有了这些丰富多彩的字段,那我们就可以减少代码的编制,无疑对提高编程效率非常有帮助。

介绍了一些基础背景后我们开始介绍如何将腾讯文档的数据批量入库。

1 建立数据源

要想将数据入库,就先需要建立数据源。登录微搭控制台,点击数据源,点击新建数据模型

输入名称和标识

数据源建立之后需要创建字段,点击添加字段

初学者最大的疑问是我需要建哪些字段,字段是个什么概念?我们还是先看一下我们的腾讯文档的在线表格

会用excel的人都知道,excel里有行和列的概念。那我们的字段其实是列,每一列都对应一个字段。字段的类型其实是和单元格的内容是相关的。比如我的A2单元格是张三,明显是存的字符,那么我们的类型就是文本。C2是出生日期,应该是日期类型。D2是联系电话,可以选择文本也可以选择电话类型。

明白了这个基础概念之后,我们分别添加一下字段,一共是四个字段,姓名、性别、出生日期、联系电话

2 编制入库的代码

我们上一节介绍了如何创建连接器来对接腾讯文档,不会的同学可以翻看上一篇文章添加腾讯文档连接器

读取腾讯文档的数据分为读取sheet,根据sheet获取每一行的数据。因为是入库,还需要将解析好的数据封装到对象中,调用批量新增的方法入库。我们来一步步讲解一下。

2.1 创建低码方法

要想入库,先需要创建一个低码方法。点击左上角的低码编辑器进入到代码界面

低码编辑器打开之后会定位到当前页面,在handler旁边点击+号来创建低码方法

首先需要输入一个方法名,方法名最好能望文知义,我们可以定义一个batchAdd方法

平台会自动生成代码结构

初学者因为没有系统的学习过编程,往往容易犯的错误是自由发挥,随意编制代码。我们讲解一下这里的知识点。一般我们在handler里定义的方法叫函数,函数由几部分组成,函数名、入参、出参(或者叫返回值)

export default function 是函数的定义,这里叫匿名函数,就是不给函数起一个名字。如果函数体里写了await了,这个函数需要改写成异步函数,变成 export default async function

小括号里边的叫入参,多个参数以逗号分隔。我们这里其实只有一个入参,是{event,data}。用一对儿大括号包裹的叫对象,对象里是具体的入参。

event是事件对象,一般我们可以获取到组件里的值,data是如果调用事件传参了,可以直接从data里获取值。具体如果希望看到值的我们可以使用打桩的技术,所谓的打桩就是在控制台输出具体的值。

比如我们可以这样写

export default function({event, data}) {
  console.log(event,data)
}

打好桩之后,如何看结果呢?事件必须绑定到组件上,组件产生的各种的动作可以触发事件。就像我们这个批量入库,需要用户主动触发,就需要放置一个按钮,并且绑定点击事件,来触发批量新增的方法。

事件绑定好之后在哪看结果呢?点击开发调试工具来看具体的输出

这时候点击一下按钮就可以看到对应的输出

输出的结果还是蛮复杂的,不同的组件产生的事件对象不同,里边的内容不同,我们会在具体的场景进行深入的讲解。为啥本篇会先讲一些基础操作呢?因为不少粉丝是按照教程的步骤一步步操作的,不懂基本的操作有时候会乱粘贴一气,然后就是各种各样的报错,还不知道从哪看错误,浪费了不少时间。

2.2 低码中调用连接器

我们上一篇是使用变量的方法调用了连接器,这一篇我们使用低码方法调用连接器。为了获取腾讯文档中的数据,先需要获取工作表的信息。我们复习一下变量中我们是如何调用的

这里是调用了getSheets方法,并且传入了bookID,低码中是通过api的方式来调用的,在方法中输入如下代码

const bookID = "DWkxMSFlkU1l2YkRo"; 
  const { sheetData } = await app.cloud.callConnector({
    name: 'txwd_jnegl1q', 
    methodName: 'getSheets', 
    params: {
      bookID,
    },
  });
console.log(sheetData)

这里的bookID是通过腾讯文档分享链接的时候获取到的,{sheetData}是解构赋值的意思,可以直接从返回结果里获取对应的值。可以看一下控制台打印的结果

要怎么看返回结果呢,一对儿中括号表示数组的意思,展开数组第一个元素的下标是0,数组里的元素是个对象,对象是以一对儿大括号表示的,对象里边又有具体的属性和方法。我们这里边需要的是sheetID,cloumnCount,rowCount。

了解了之后我们就定义变量来接收返回值,输入如下代码

let sheetID = sheetData[0].sheetID
  let rowCount = sheetData[0].rowCount
  let columnCount = sheetData[0].columnCount
  console.log(sheetID, rowCount, columnCount)

看控制台的打印结果

接着我们就需要根据返回的结果调用获取单元格的方法,我们使用变量的时候是这么做的

代码中是这样获取

const { rows } = await app.cloud.callConnector({
    name: 'txwd_jnegl1q', 
    methodName: 'getRows', 
    params: {
      bookID,
      sheetID,
      rows: `2-${rowCount}` 
    },
  });
console.log(rows)

这里小伙伴不明白的就是这一句2-${rowCount},用两个反引号包裹的表示模板字符串,里边如果使用${}这种语法的表示变量,代码只要一执行就会翻译2-3,读取第二行、第三行的数据。我们看一下输出的结果

textTypes表示每一列的字段类型,textValues表示具体的值。字段类型我们不需要,只需要解析出具体的值就可以

这样每行的数据也解析出来了,就需要按照需要的格式整理入库了,下边是入库的代码

const newRecords = [];
  const columns = "xm|xb|csrq|lxdh"; 


  for(let r = 0; r < rowCount - 1; r++) {
    const { textValues } = rows[r];
    const inputParams = {};
    const cols = columns.split('|');
    cols.forEach((c, i) => {
      inputParams[c] = textValues[i];
    });

    newRecords.push(inputParams);
  }


  await app.cloud.callModel({
    name: 'txwdsjy_q6rop6n', // 数据模型标识
    methodName: 'wedaBatchCreate', // 新增多条的方法标识
    params: {
      records: newRecords,
    },
  });

这里columns是内数据源的每一个字段的字段标识,可以去数据源那块找到

其余的代码因为涉及到具体的编程知识,你直接复用就可以,感兴趣的同学可以学习一下javascript,了解了语法之后就可以读的懂

写好之后点击按钮,发现有两条数据已经写入数据库了

但是有个问题是出生日期没有正确的读出来,入库的日期都是1970-01-01。如果有解决办法的小伙伴可以评论区留言,也方便大家学习。

3 最终的代码

export default async function ({ event, data }) {
  console.log(event, data)
  const bookID = "DWkxMSFlkU1l2YkRo";
  const { sheetData } = await app.cloud.callConnector({
    name: 'txwd_jnegl1q', 
    methodName: 'getSheets', 
    params: {
      bookID,
    },
  });
  console.log(sheetData)
  let sheetID = sheetData[0].sheetID
  let rowCount = sheetData[0].rowCount
  let columnCount = sheetData[0].columnCount
  console.log(sheetID, rowCount, columnCount)
  const { rows } = await app.cloud.callConnector({
    name: 'txwd_jnegl1q', 
    methodName: 'getRows', 
    params: {
      bookID,
      sheetID,
      rows: `2-${rowCount}` 
    },
  });
  console.log(rows)
  const newRecords = [];
  const columns = "xm|xb|csrq|lxdh"; 

  
  for(let r = 0; r < rowCount - 1; r++) {
    const { textValues } = rows[r];
    const inputParams = {};
    const cols = columns.split('|');
    cols.forEach((c, i) => {
      inputParams[c] = textValues[i];
    });

    newRecords.push(inputParams);
  }


  await app.cloud.callModel({
    name: 'txwdsjy_q6rop6n', 
    methodName: 'wedaBatchCreate', 
    params: {
      records: newRecords,
    },
  });
}

4 总结

我们本篇详细的介绍了低代码中如何解析腾讯文档的数据,如何批量入库。虽然现在低码中还没有批量导入的功能,但是我们通过腾讯文档也是可以做到的,如果学会了赶紧照着做一下吧。

到此这篇关于小程序中实现excel数据的批量导入的示例代码的文章就介绍到这了,更多相关小程序 excel批量导入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 小程序中实现excel数据的批量导入的示例代码

本文链接: https://lsjlt.com/news/154171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 小程序中实现excel数据的批量导入的示例代码
    目录1 建立数据源2 编制入库的代码2.1 创建低码方法2.2 低码中调用连接器3 最终的代码4 总结我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,...
    99+
    2024-04-02
  • 小程序中如何实现excel数据批量导入
    本篇内容介绍了“小程序中如何实现excel数据批量导入”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 建立数据源要想将数据入库,就先需要建...
    99+
    2023-07-02
  • navicat批量导入excel表格数据的示例
    这篇文章给大家分享的是有关navicat批量导入excel表格数据的示例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。背景:首先我尝试了直接导入excel,由于要导入的数据有二十...
    99+
    2024-04-02
  • JavaScript实现导入导出excel的示例代码
    目录Excel导入实现方式1实现方式2Excel导出Excel导入 先下包(xlsx) npm i xlsx 把数组里面中文的键修改成英文的键: 原因:因为中文的键后台不认识,只能修...
    99+
    2024-04-02
  • PHP实现导入大量CSV数据的示例代码
    目录前言代码部分一. controller 写法二. yield 读取数据以及处理空行方法结论知识点补充前言 网上有很多介绍大量上传数据的,感觉都是一个抄一个,这是自己写的处理方式,...
    99+
    2024-04-02
  • MySQLWorkbench导入excel数据的实现示例
    MySQL Workbench为使用MySQL的用户提供了丰富的功能,其中就包括数据导入。 选中你想要导入的db或者表,右键 --> Table Data Import Wiz...
    99+
    2023-01-05
    MySQL Workbench导入excel MySQL Workbench导入
  • 基于JavaSSM实现Excel数据批量导入
    目录导入Maven依赖Mapper及映射文件测试导入Maven依赖 <dependency> <groupId>com.alibaba</grou...
    99+
    2024-04-02
  • MySQL Workbench导入excel数据的实现示例
    MySQL Workbench为使用mysql的用户提供了丰富的功能,其中就包括数据导入。 选中你想要导入的db或者表,右键 --> Table Data Import Wizard就可以开始导入了 选择你想要导入...
    99+
    2023-01-05
    MySQLWorkbench导入excel MySQLWorkbench导入
  • Mybatis Plus 实现批量插入的示例代码
    目录一. 添加依赖二. 继承默认方法注入三. 在 MybatisPlusConfig 配置文件中注入 Bean四. 扩展自带 BaseMapper五. 业务层面实现Mybatis P...
    99+
    2024-04-02
  • Pandas实现批量拆分与合并Excel的示例代码
    目录前言一、拆分成小表格二、合并excel1.介绍2.代码前言 提示:这里可以添加本文要记录的大概内容: 将一个EXCEL等份拆成多个EXCEL 将多个小EXCEL合并成一个大EXC...
    99+
    2024-04-02
  • Excel数据如批量导入navicat的方法
    这篇文章主要介绍了Excel数据如批量导入navicat的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。打开电脑上的Navicat,点击左上...
    99+
    2024-04-02
  • 基于Java SSM如何实现Excel数据批量导入
    今天就跟大家聊聊有关基于Java SSM如何实现Excel数据批量导入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。导入Maven依赖<dependency>&...
    99+
    2023-06-21
  • C++实现将数据写入Excel工作表的示例代码
    目录安装Spire.XLS for C++在 C++ 中将文本或数字值写入单元格完整代码效果图在 C++ 中将数组写入指定的单元格范围完整代码效果图直观的界面、出色的计算功能和图表工...
    99+
    2023-03-11
    C++数据写入Excel C++ 数据 Excel C++ Excel
  • Python实现批量翻译的示例代码
    目录截图源码Translator.pyLog.pyUtils.py简单的使用案例Python版本截图 源码 Translator.py #!/usr/bin/python # -*...
    99+
    2024-04-02
  • ReactNative中实现动态导入的示例代码
    目录背景多业务包动态导入Metro 打包原理打包过程bundle 分析__d函数__r函数方案设计分识别入口树拆分bundle 生成合总结背景 随着业务的发展,每一个 React N...
    99+
    2024-04-02
  • Springboot实现Excel批量导入数据并保存到本地
    目录前言成果展示了解Excel表格基本属性表设计引入依赖 工具类ControllerentityMapperUserService测试总结前言 当我们给数据库中的表中添加数...
    99+
    2024-04-02
  • ASP.Net MVC利用NPOI导入导出Excel的示例代码
    什么是NPOI 该项目是位于http://poi.apache.org/的POI Java项目的.NET版本。POI是一个开源项目,可以帮助您读取/写入xls,doc,ppt文件。它...
    99+
    2024-04-02
  • vue实现excel表格的导入导出的示例
    目录一、下载xlsx插件二、通过element-ui组件的upload组件上传文件三、把选择的Excel文件把文件内容转化为二进制四、通过插件中的xlsx.read()读取二进制数据...
    99+
    2023-05-15
    vue excel导入导出 vue excel导入 vue excel导出
  • Python实现IP代理批量采集的示例代码
    目录开发环境 模块使用 基本流程(思路)一. 数据来源分析二. 代码实现步骤过程代码开发环境  python 3.8 pycharm 模块使用 ...
    99+
    2024-04-02
  • Qt实现数据导出到xls的示例代码
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作