procedure TForm1.Button2Click(Sender: TObject);
var
CsvLines, CommaStr: TStringList;
begin
CsvLines := TStringList.Create;
CommaStr := TStringList.Create;
CsvLines.LoadFromFile('test.csv'); //读取
CommaStr.CommaText := CsvLines[1];
CommaStr[2] := '.67138671875'; //99.0859375改为.67138671875
CsvLines[1] := CommaStr.CommaText;
CsvLines.SaveToFile('test.csv'); //写入
CsvLines.Free;
CommaStr.Free;
end;

1、使用TStringList将数据加载;
2、过滤不需要的数据;
3、通过StringGrid或其他控件显示;
4、遍历StringGrid保存修改的内容,注意不要丢失前面过滤的内容!!!

procedure TForm1.Button1Click(Sender: TObject);
var
strlist: TStringList;
begin
strlist := TStringList.Create;
strlist.LoadFromFile('C:\text.csv');
memo1.Lines.AddStrings(strlist);
strlist.Free;
end;

 

procedure TForm1.Button2Click(Sender: TObject);
var
strlist: TStringList;
begin
strlist := TStringList.Create;
try
strlist.LoadFromFile('c:/test.csv');
memo1.Lines.AddStrings(strlist);
finally
strlist.Free;
end;
end;

麻烦了,还要编码转换的呀。
把读出的数据用这个函数转换试试。
UTF8ToAnsi(Value);

你会用Delphi读文本文件吗?csv其实就是一文本文件
CSV全称 Comma Separated value,也叫逗号分隔值文件,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。 
  规则
  0 开头是不留空,以行为单位。
  1 可含或不含列名,含列名则居文件第一行。
  2 一行数据不垮行,无空行。
  3 以半角符号,作分隔符,列为空也要表达其存在。
  4 列内容如存在,,则用“”包含起来。
  5 列内容如存在“”则用“”“”包含。
  6 文件读写时引号,逗号操作规则互逆。
  7 内码格式不限,可为ASCII、Unicode或者其他。

 

最简单的方法是这样的:
1、把你一条数据的各个字段用“,”隔开,然后拼成一个字符串,当然了,字符串类型的字段最好是加上双引号。
  这样你就得到一个字符串了。例如“1,"zhangsan",1,"kkk dsg"。。。。。”
2、定义一个TStringList,把这个字符串加到StringList里面。
3、自然的,有多少条数据都可以追加到StringList里面。
4、你所有的字符串都加完了以后,最后调用一下StringList.SaveTofile。
一切问题搞定。

 

 

方法思路而:

 

你把csv当成一个access数据库就行了  
一点提示:
用ado组件ADOConnection,ADOQuery连接

if OpenDialog1.Execute then
begin
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
ExtractFilePath(OpenDialog1.FileName) + ';Extended Properties=Text';
try
ADOConnection1.Connected := True;
except
ShowMessage('文件连接出错,请检查文件格式!');
end;
end;


查询csv文件中所有数据

  with ADOQuery1 do
begin
Close;
SQL.Clear;
sql1 := StringReplace(ExtractFileName(OpenDialog1.FileName),
ExtractFileExt(OpenDialog1.FileName), '', [rfReplaceAll]);
sql1 := 'select * from ' + sql1 + '#csv';
SQL.Add(sql1);
Open;
end;
while not ADOQuery1.Eof do
begin
//你要对获取的数据进行的操作
..........
ADOQuery1.Next;
end;






posted on 2011-12-31 15:18  del88  阅读(18)  评论(0编辑  收藏  举报