关于文本文件导入,急!!(100分)

  • 主题发起人 主题发起人 北野武
  • 开始时间 开始时间

北野武

Unregistered / Unconfirmed
GUEST, unregistred user!
手头有数个文本文件,格式大致是
公司A 12345632145 2123654231 123654123
公司B 12456321455 125478112221 145247
公司C 1254 154235 145633325444
以次类推
没有SCH文件,如何才能把他们到入PARADOX表中呢?要求能够按列分开,并可以加总统计
小弟才疏学浅,望各位高手指教
 
要求文本文件中对应的各列要有统一的分隔符。

先遍历文件取得各行字符串,再根据分隔符得到各列。
 
这种文件的读取
用 TStrings
是很方便的。
 
var
rfile:textfile;
blank:char;
GSA:string[8];//公司A
Nums1:string[14];//12345632145
Nums2:string[13];//2123654231 ;//自己数一下一共有多少个字符(包括后面的空格)
Nums3:string[12];//145633325444;长度为12或更大
str1:string;
begin

str1:='文本文件名';
assignfile(rfile,str1);
reset(rfile);
while not eof(rfile) do
begin
i:=i+1;
readln(rfile,GSA,Nums1,Nums2,Nums3);
//读出一行后就进行保存或转化,然后存到数据库
//或者设个数组,一次读出所有数据
............
..........
end;

closefile(rfile);

end;
 
先导入access2000再导出为*。db格式;
很容易的,不过是手工的吆!
 
不怕麻烦用下面方法,除去了空格:
(我以前做过的,改了一下)
var str:string;

procedure TForm1.Button1Click(Sender: TObject);
var lst:Tstringlist;
lst1:Tstringlist;
i,j:integer;
sql:string;
begin
i:=0;
lst:=tstringlist.create;//如果文件不是很大(40M吧)就用这个,快点,如果太大用resun的文件一行一行读的方法
lst1:=tstringlist.create;
lst.LoadFromFile('1.txt');
for i:=0 to lst.Count-1 do begin
str:=lst.Strings;
lst1.Clear;
for j:=1 to 4 do begin
lst1.Append(getsubstr(str,' ',j));
end;
//这个时候当前行的数据已经分解开且存放在lst1中,存到你的库中即可
{ sql:='insert into list(name,l1,l2,l3) values('+#39+lst1[0]+#39+','+#39+lst1[1]+
#39+','+#39+lst1[2]+#39+','+#39+lst1[3]+#39+')';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql);
adoquery1.ExecSQL;}
end;

lst.Free;
lst1.Free;

end;
//分解当前行
Function Tform1.GetSubStr(var aString:String;SepChar:String;id:integer):String;
var Mystr:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=0;
while strlen=0 do begin
SepCharPos:=Pos(SepChar,aString);//定位第一个(空格)的位置(在第几字节)
MyStr:=Copy(aString,1,SepCharPos-1);//从开始复制到第一个(空格)前的数据
Delete(aString,1,SepCharPos); //删除第一个(空格)及其以前的数据
if (id=4) and (astring[1]<>' ') then begin //如果是最后一数据只需删除前面的(空格)
mystr:=astring;
end;
StrLen:=Length(mystr);
end;
GetSubStr:=MyStr; //返回结果
end;
//我试过,没问题;
 
resun,的方法是最好的
 
用 TStrings 读数据
 
多人接受答案了。
 
后退
顶部