BIGAL 发表于 2022-7-6 10:57:35

我认为你现在真的需要选择一种方法,我们有3种,从excel读取,访问数据库和一个csv txt文件,我个人会做更多的搜索重新excel链接有很多关于如何读取单元格a1和b1,然后a2和b2等的帖子更简单,每个人通常都可以使用电子表格。

irneb 发表于 2022-7-6 11:04:19

除Excel方法外,其他所有方法都使用数据列表。excel方法也可以使用列表,但可以依次直接处理每个单元格。ADOLisp基本上将SQL查询提取到嵌套列表中,列表中的第一项是列名列表,下面的项是字段值列表,其顺序与列名相同。 
要从CSV文件中获得类似的表示,需要将文件一次读取一行(使用读取行)到字符串变量中。然后需要标记该字符串。有多种方法,您可以在此处搜索CSV令牌化。然而,我的做法略有不同。我将所有行读入一个字符串变量,然后将其发送到我的RegExp中的RX:CSV令牌函数。LSP文件。这只是对整个文件进行标记,以生成与ADOLisp完全相同的列表类型。以下是使用我的代码读取整个CSV文件的示例:
或者(可能更有效一点):
正如比加尔所说,我也建议你首先选择这三种方法中的一种。你可以稍后提供一个选项来阅读这3个选项中的任何一个,一旦你让其中一个工作。通常从CSV开始是个好主意,因为它更像是一种通用存储。
 
“普通”Excel方法(即通过ActiveX)要求用户安装了Excel。ADOLisp只允许使用Access ODBC/ADO驱动程序的MDB文件,而不需要整个Access程序。顺便说一句,ADOLisp也允许读取(可能写入)XLS文件,因为它可以使用Excel ODBC驱动程序,不需要Excel程序。
 
在任何情况下,我建议您获取类似此嵌套列表的内容。它的优点是每行的第一个字段可以用作“键”。因此,如果用户键入值,您可以使用assoc搜索相关行。例如,假设数据(通过我的上述例程从CSV读取)存储在名为data的变量中,您可以执行以下操作:
只要第一列是唯一的,就可以得到“正确”行。如果不是唯一的,你只能得到第一个这样找到的。否则,搜索一个名为massoc的例程,该例程将提取以键作为其第一个字段的所有行。
 
然后,为了扩展到MDB/XLS/AnythingElse,您需要做的就是编写一些代码,将数据提取到类似的列表中。这意味着你已经让你的日常生活变得可有可无——从长远来看,这会有很大帮助。
页: 1 [2]
查看完整版本: 从外部文件读取