求一个能用的C++ 读取forpro DBF文件并转成 TXT的程序,谢谢 |
|
数据库的操作还是用ADO直接操作,然后再根据自己的格式输出信息到TXT文件比较好。
|
|
有个DBF的库,前年还移植过,可以直接在纯C下操作DBF的,可以增删改。现在工作系统加密,不能传输。
搜一下了 |
|
forpro和foxpro不是一回事!
关于自己是否适合编程的很简单的测试: A里面有10处以上文字或标点错误 A不适合编程(理由:打字准确度偏低、粗心大意) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习” |
|
Excel就可以读.dbf的。
|
|
多谢楼上几位
是一个单独的DBF文件,所以没法用ADO之类的 也不能利用DBF库之类的,因为要WIN,LINUX,UNIX都能用 因此希望就读取一个dbf文件,根据文件结构去读取记录内容,我刚开始学C++,因此不知道怎么读dbf文件 ——————————– |
|
100分 |
#include <stdio.h> #include <string.h> #pragma pack(push,1) typedef struct HeadOfDbf { unsigned char tab; unsigned char year; unsigned char month; unsigned char day; unsigned int recnum; unsigned short offset; unsigned short reclen; char save[20]; } InfoOfDbfHead; typedef struct HeadOfDbfIndex { unsigned char fname[11]; unsigned char type; int addr; unsigned char width; unsigned char doc; char save[14]; } InfoOfDbfIndex; #pragma pack(pop) InfoOfDbfHead Head; InfoOfDbfIndex Index[48]; int offset[48],n; FILE *fdbf; unsigned int rec,field,fieldnum,i; char buf[256]; //------------------------------------------------------- int main(int argc,char *argv[]) { if (argc==1) { fprintf(stderr,"Usage:\n%s filename[.DBF]",argv[0]); return 1; } strcpy(buf,argv[1]); if (buf[strlen(buf)-4]!=""."") strcat(buf,".dbf"); if ((fdbf=fopen(buf,"rb"))==NULL) { fprintf(stderr,"Can not fopen file [%s]!",buf); return 2; } fseek(fdbf,0L,SEEK_SET); fread(&Head,sizeof(InfoOfDbfHead),1,fdbf); fieldnum=(Head.offset-1)/32-1; fseek(fdbf,32,SEEK_SET); n=0; printf("|"); for(i=0;i<fieldnum;i++) { offset[i]=n; fread(&Index[i],sizeof(InfoOfDbfIndex),1,fdbf); printf("%-*s|",Index[i].width,Index[i].fname); n=n+Index[i].width; } for (rec=0;rec<Head.recnum;rec++) { printf("\n|"); for (field=0;field<fieldnum;field++) { fseek(fdbf,(long)(Head.offset+1+rec*(long)Head.reclen+offset[field]),SEEK_SET); fread(buf,1,Index[field].width,fdbf); buf[Index[field].width]=0; printf("%s|",buf); } } fclose(fdbf); return 0; } |
很感谢 zhao4zhong1 大神
我会好好学习一下 另外我有两个担心 1、如果DBF文件很大,比如5G甚至更大,会不好报错? 2、如果DBF有MEMO型字段会不会解析不正确? 3、另外我想搞个设置,比如字段3和字段5不要,也可能设置成字段1、7和字段8不要打印出来 |
|
多谢zhao4zhong1 大神! |
|
谢谢赵老师,学习了,而且还能直接用在项目里,解决了原先DBF文件解析速度过慢的问题
|