Excel|多个dbf文件的合并处理

在以前的文章Python|OS、shutil实现批量扫描、复制、压缩文件中介绍过批量从有规则的路径下复制文件的操作。
今天碰到的需求和上次类似,也是从有规则的路径中复制文件出来,但复制出来的数据文件(dbf格式)需要进行合并操作。关于Python处理dbf文件我没有研究过,于是我就想到了之前写过的Excel|合并当前目录所有的excel文件。因为dbf文件是可以在excel中进行处理的,所以就猜想是否可以修改.dbf文件的后缀为.xls,之后通过VBA实现批量合并操作~

处理过程

dbf文件批量复制并修改后缀名

效果图如下:
dbf文件批量复制并修改后缀名
源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import os
import shutil

# 桌面创建文件夹
def md(tp=None):
if os.path.exists(r'C:\\Users\\admin\\Desktop\\'+tp):
pass
else:
os.makedirs(r'C:\\Users\\admin\\Desktop\\'+tp)
return

# 读取文件夹
def rd(begindate,enddate):
for i in range(int(begindate),int(enddate)+1):
if os.path.exists(r'Z:\\gildata\\FileSync\\Download\\gz\\'+str(i)):
if os.path.exists(r'Z:\\gildata\\FileSync\\Download\\gz\\'+str(i)+'\\PAR_COMPANY_CREDIT'+str(i)+'.dbf'):
shutil.copy('Z:\\gildata\\FileSync\\Download\\gz\\'+str(i)+'\\PAR_COMPANY_CREDIT'+str(i)+'.dbf','C:\\Users\\admin\\Desktop\\聚源评级信息')
print('{}日的评级信息已完成复制'.format(i))
else:
print('无{}日的评级信息'.format(i))
else:
print('无{}日的聚源数据文件夹'.format(i))

# 修改dbf的文件格式为xls
def dbf_to_xls():
os.chdir(r'C:\\Users\\admin\\Desktop\\聚源评级信息')
os.system(r'rename *.dbf *.xls')

if __name__ == '__main__':
# 输入起止日期
begindate = input('请输入开始日期(格式:20220801):')
enddate = input('请输入结束日期(格式:20220831):')
# 检查文件夹
md("聚源评级信息")
# 遍历文件夹
print('#####开始复制{}-{}的评级信息#####'.format(begindate,enddate))
rd(begindate,enddate)
print("#####文件复制完成#####")
dbf_to_xls()
print("#####文件后缀修改完成#####")
print("#####任务执行完成#####")

VBA批量合并xls文件

效果图如下:
VBA批量合并xls文件
源码参考:Excel|合并当前目录所有的excel文件


商业转载请联系作者获得授权,非商业转载请注明出处。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

Excel|多个dbf文件的合并处理
http://hncd1024.github.io/2022/09/14/VBA-合并多个dbf文件/
作者
CHEN DI
发布于
2022-09-14
许可协议