速成班101
10 模块
5 周数

循环,导入Excel文件

点击复制

在商业流程中使用周期。 从Excel文件中读取数据。


为了理解进一步的过程,有必要对理论进行一番探讨,了解循环的原理。以前,我们所有的进程都只往前走。他们可以选择一个特定的分叉(在 If-ElseSwitch区块),但我们确信每个区块只被执行一次;不会有回头路。

循环

循环提供了多次重复一个特定部分的能力。流程的建立使选定的区块序列被反复执行。直到满足终止循环的条件。

AppMaster 让你有能力使用三种不同的循环。它们的工作原理是完全相同的。终止循环的条件是区别它们的唯一因素。

  • Loop.所有周期中最简单的一个。它的 Times (Integer)参数为给定的循环应该执行多少次设置了一个固定值。
  • While loop.一个循环,将运行到满足某个条件为止。这个条件是在 Condition (Boolean)参数中指定。在每个循环的开始,检查Condition ,如果是True ,则执行循环;如果是False ,则停止循环。参数 Limit (Integer)参数设定了循环的重复次数限制,以确保循环不会永远运行。当达到它时,循环将结束,不管Condition.
  • For each loop.循环旨在与数组一起工作。它接受一个数组作为输入,并允许你对每个数组元素执行某种操作。运行的次数与数组中的元素一样多。

每个循环有两个输出流。

  • Loop Body.循环体本身。该过程,将被重复必要的次数。
  • Completed.循环结束时将运行的线程。指定循环结束后下一步要做什么。顺便说一下,任何循环都可以根据命令完成,而不需要等待初始条件的满足。要做到这一点,你只需要在正确的地方使用 Break Loop块在正确的地方。它将立即把流转到Completed

Read XLSX File

为了分析xlsx文件,我们将使用 Read XLSX File区块。它的工作原理几乎与 For each loop块。它将表格文件表示为一个字符串数组。而每一行,反过来,也是一个数组,但已经是给定行的列的数组。


xlsx文件本身也是以类似的形式呈现。第一栏包含章节的名称,第二栏包含这个章节所包含的信息。同时,我们事先根本不知道信息写在哪一行,它可以出现在任何任意的地方。在这个例子中,传记被写在第二行,登录信息被写在第八行,但这些行和写的顺序可以是任意的。

业务流程开始时,接收一个文件作为输入参数。请注意,传送的是文件的数据类型,也就是文件的ID,而不是整个文件。我们将同一个文件传递给 Read XLSX File块。


Each row,在这种情况下,是一个类似于 Loop Body.这意味着该循环将被执行,次数与xlsx文件中的行数相同。同时,在每个循环中,我们都会收到关于现在正在处理哪一行的信息 (Row number),以及该行中的哪些列(Row columns).

我们的任务是检查每一行的第一个单元格。我们期望能找到一个写着 "登录 "或 "生物 "的单元格。这样,我们就会明白,我们已经找到了一个包含必要信息的列。

要做到这一点,我们需要一个 Array Element这就是我们如何获得字符串的第一个单元格的内容。之后,我们用 Switch块来找到所需的匹配(Login, Bio)。

如果没有找到这样的匹配,那么循环就会进入下一个迭代,检查下一行。如果找到了,那么我们就知道这一行的第二个单元格应该包含我们需要的信息,并再次使用 Array Element块(但索引为1)来获取这些信息。

剩下的就是要保存这些信息。毕竟,如果你不马上这样做,那么循环就会继续下去,而收到的数据就会丢失。

变量

在这种情况下,最好的解决办法是使用变量。它们的意义在于,某些值不会立即从一个块转移到另一个块,而是存储在内存中,必要时使用。

有两个区块用于此。

  • Variable块。它可以是任何数字、字符串,甚至是一个对象的数组。重要的是要理解这个块本身没有做什么;它没有输入参数。它的作用只是宣布一个事实,即在内存中分配了一个位置用于写入一些数值,以后可以再次引用它,并找出这个数值。
  • Set Variable块被设计用来向一个变量写入一个新的值。

在我们的例子中,我们将定义两个类型的变量 String并将找到的值写进它们,在一个地方登录,在第二个地方Bio。在循环结束时,我们只需要将这些变量的值传递给结束块。


现在是时候为已完成的业务流程创建一个端点,从而使其可在网络应用程序前端使用。


最终结果

作为一个结果业务流程应该是这样的。


有了收尾工作,可以完成应用程序的创建。让我们回到前端的业务流程并完成它。我们需要

  • 传递xlsx文件模型以保存到服务器上。
  • 展开结果,得到文件ID。
  • 将这个ID传递给之前创建的端点POST /xlsx-data/
  • 使用收到的数据在适当的字段中显示(同时重置Disable 参数,为编辑提供可能)。

如果一切操作正确,从文件中加载信息后,最终版本应该是这样的。

Was this article helpful?
还在寻找答案吗?
加入社区