程序思路:
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))