程序思路:

1、从企业的摘要中,找出日期,比如摘要为“11.25南方机械”,将其中的11.25提出出来,形成20191125的日期格式,再和金额字段连接,形成“日期|金额”的核对列。

2、银行数据中,也形成“日期|金额”的核对列,然后两表的核对列进行数据核对,已核对上的数据,在核对字段中做标记,下次不再对此条数据进行查找。

3、最后将未核对上的数据导出Excel表格。

部分使用到的技巧:

MyPos = AT(".",zy) &&获取小数点的位置

在摘要中,企业一般将日期放到最前面,如“11.25南方机械”,先用At函数获取小数点的位置,用以确定月份和日期的分界。

 2、*提取日期

Rq = substr(zy, MyPos + 1,2)        &&日期从小数点后面1位开始截取,截取2位长度
IF NOT ISDIGIT(RIGHT(Rq,1))         &&如果最右面1位不是数字,说明日期格式为11.5的形式
  Rq = "0" + LEFT(Rq,1)            &&左边用0补齐
ENDIF

3、Import From d:\NewTest95.Xls Type Xl5 &&导入到默认目录下的NewTest95表中

通过import导入的表,各列全部为字符型。如果需要计算,需要转换为数值型。

4、exceltool类中的ImportFile方法,功能:将参数lcFileName 指定的Excel文件转换为dbf文件。

Function ImportFile(lcFileName As String)   

5、具体exceltool类使用方法:

    关键点:

导入:cFile = oExcel.ImportFile(cExcel)      &&ImportFile返回转换后的dbf文件名

将文件名存入dbf表中:INSERT INTO data\importFile (tabletype,tablename) VALUES ("企业",cFile)

③打开上面形成的dbf表,获取需要的文件名,继续处理其他业务。 

***读取数据源所在的EXCEL文件名****
oExcel = Newobject("ExcelTool","ExcelTool.prg")
cExcel = oExcel.GetExcel()             &&比如银行日记账核对中,这里需要导入的文件为“银行日记账201912” 
IF EMPTY(cExcel)
  Messagebox("未选择(或未找到需要的) EXCEL 文件",64,"系统信息")
  RETURN 
ENDIF 
cFile = oExcel.ImportFile(cExcel)      &&ImportFile返回转换后的dbf文件名
 
**以下将cFile为文件名的变量,作为字段tablename的值,存入dbf表importFile中
INSERT INTO data\importFile (tabletype,tablename) VALUES ("企业",cFile)
 
 
***读取数据源所在的EXCEL文件名****
SELECT 1
USE  data\importfile        &&打开上面用insert形成的dbf表
LOCATE FOR tabletype="企业"
dbfhbfp = tablename         && tablename字段中存放的是上面用ImportFile导入的dbf文件名
SELECT 2
USE (dbfhbfp) ALIAS dbfhbfp EXCLUSIVE    &&打开该表并赋予别名
Alter Table  dbfhbfp Add Column  dzsj c(50) add COLUMN hd c(1)

Str函数:在VFP中,str函数将数值型数据转为字符串,默认长度为10,如果不指定小数点,有时会将原来的小数变成了整数。如本次银行对账,原来的交易金额为6901.86,如果只用jyje = 6901.86,str(jyje),则转换后的软为6902。所以需要用str(jyje,20,2)指定小数点后保留2位。

REPLACE dzsj WITH rq +"|"+ALLTRIM(STR(jyje,20,2))