主题:.dbf转换为.xlsx 除去讨厌的日期格式的省时法
*.dbf转换为.xlsx:先copy为.xls文件,再把讨厌的日期格式变成与.dbf相同的格式,省时。
close data
*------打开有日期字段的表
mydbf=getfile('自由表文件:dbf','打开表','确定',0,'请取含有日期字段的表')
if isblank(mydbf)
retu
else
use (mydbf)
endif
xlsname=Sys(5) + Curdir() + alias()+'.xls' &&给Excel文件取名
delete file (xlsname) &&管它原来有没有.xls文件,删了它
copy to (xlsname) type xls &&把当前工作区中的表copy为.xls文件,日期格式不好
oExcel=createobject("excel.application") &&建立Excel
oExcel.visible=.t. &&显示Excel
oExcel.Workbooks.Open(xlsname) &&在Excel中打开已经copy为xls的文件
*-------求日期字段第次i,只考虑处理一个日期型字段
for i=1 to fcount()
if type(field(i))='D'
datei=i
exit
endif
endfor
iTimea=SECONDS( ) &&计时开始
*------替换日期格式,使之与当前表中格式相同
for i=1 to recc()
go i
a=field(datei)
cDate=dtoc(&a)
oExcel.Workbooks[1].Worksheets[alias()].Cells[1+i,datei]=cDate
endfor
iTimeb=SECONDS( ) &&计时结束
t=allt(str(iTimeb-iTimea)) &&耗时
oExcel.Columns.AutoFit &&让所有的列宽都自动调整
*------调整日期列列宽:
*oExcel.Workbooks[1].Worksheets[alias()].Columns(datei).ColumnWidth=;
oExcel.Workbooks[1].Worksheets[alias()].Columns(datei).ColumnWidth+4
oExcel.Workbooks[1].saved=.t. &&不保存
delete file (xlsname+'x') &&管它原来有没有.xlsx文件,删了它
oExcel.Workbooks[1].SaveAs(xlsname+'x') &&另存为.xlsx文件
delete file (xlsname) &&删除.xls文件
oExcel.Workbooks.Close &&关闭工作簿
oExcel.Quit &&退出EXCEL
Release oExcel &&释放变量
messageb(str(recc())+'条记录的日期替换共费时 '+t+' 秒')
use
close data
*------打开有日期字段的表
mydbf=getfile('自由表文件:dbf','打开表','确定',0,'请取含有日期字段的表')
if isblank(mydbf)
retu
else
use (mydbf)
endif
xlsname=Sys(5) + Curdir() + alias()+'.xls' &&给Excel文件取名
delete file (xlsname) &&管它原来有没有.xls文件,删了它
copy to (xlsname) type xls &&把当前工作区中的表copy为.xls文件,日期格式不好
oExcel=createobject("excel.application") &&建立Excel
oExcel.visible=.t. &&显示Excel
oExcel.Workbooks.Open(xlsname) &&在Excel中打开已经copy为xls的文件
*-------求日期字段第次i,只考虑处理一个日期型字段
for i=1 to fcount()
if type(field(i))='D'
datei=i
exit
endif
endfor
iTimea=SECONDS( ) &&计时开始
*------替换日期格式,使之与当前表中格式相同
for i=1 to recc()
go i
a=field(datei)
cDate=dtoc(&a)
oExcel.Workbooks[1].Worksheets[alias()].Cells[1+i,datei]=cDate
endfor
iTimeb=SECONDS( ) &&计时结束
t=allt(str(iTimeb-iTimea)) &&耗时
oExcel.Columns.AutoFit &&让所有的列宽都自动调整
*------调整日期列列宽:
*oExcel.Workbooks[1].Worksheets[alias()].Columns(datei).ColumnWidth=;
oExcel.Workbooks[1].Worksheets[alias()].Columns(datei).ColumnWidth+4
oExcel.Workbooks[1].saved=.t. &&不保存
delete file (xlsname+'x') &&管它原来有没有.xlsx文件,删了它
oExcel.Workbooks[1].SaveAs(xlsname+'x') &&另存为.xlsx文件
delete file (xlsname) &&删除.xls文件
oExcel.Workbooks.Close &&关闭工作簿
oExcel.Quit &&退出EXCEL
Release oExcel &&释放变量
messageb(str(recc())+'条记录的日期替换共费时 '+t+' 秒')
use