我想实现的是打开一个CSV文件,然后读取文件中的数据,有代码参考吗?

解决方案 »

  1.   

    和文本文件.txt 格式一样,读一行解析一行就可以了。
      

  2.   

    但是CSV里同是列表格式,跟TXT文件不大一样吧
      

  3.   

    若是文件内容是文本就比较简单var
       tstrList: TStringList;
    begin
       tstrList := TStringList.Create;
       tstrList.LoadFromFile('aaa.csv');   // 处理列表内容就行了
       try
          // ??? ... ...
       except
       end;   tstrList.Free;
    end;
      

  4.   

    導入csv
    procedure TForm1.Button1Click(Sender: TObject);
      var
      sqlstr,connstr,sheetName,filename:string;
    begin
      FileName :='d:\d.csv' ;//文件名
      SheetName :='csv1_name' ; //表名
      ADOQuery1.Close ;
      ADOQuery1.SQL.Clear ;
      ConnStr :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';
      ADOQuery1.ConnectionString :=ConnStr ;
      SqlStr :='Select * from ' +'[' +SheetName + '$'+']';  //打開表
      ADOQuery1.SQL.Add(SqlStr) ;
      ADOQuery1.Prepared ;
      ADOQuery1.Open ;
    end;
      

  5.   

    unit transform;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
      TForm1 = class(TForm)
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        Button2: TButton;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Query1: TADOQuery;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
     var 
         i : Integer;
         d:integer;
         F: TextFile;
         S: string;
         tstrList:Tstrings;
         iPos: Integer;
         str0, str1: string;
    begin
        if OpenDialog1.Execute then { Display Open dialog box }
         begin
            AssignFile(F, OpenDialog1.FileName); { File selected in dialog }
            Reset(F);
            Readln(F, S);
         end;    if Length(s) < 1 then Exit;
            str0 := s;
            iPos := Pos(',', str0);
       { while(iPos > 0) do
         begin
            str1 := Copy(str0, 1, iPos - 1);
            str0 := Copy(str0, iPos + 1, Length(str0) - iPos);
            iPos := Pos(',', str0);
         end;     }
            CloseFile(F);       
    //创建表
            Query1.SQL.Clear;
            Query1.Close;
            Query1.SQL.Text:='create table mytable ('
                                   +' SiteName char (10) NULL, '
                                      +' Latitude char (10) NULL,'
                                  +' Longitude char (10) NULL, '
           +' AntennaType   char (10) NULL, '
           +' Sectorwidth char (10) NULL,'
           +' Azimuth  char (10) NULL, '
           +' AntennaHeight  char (10) NULL,'
           +' Downtilt char(10) NULL,'
           +' ERP  char (10) NULL,'
           +' CellIdentity char (10) NULL, '
           +' Technology char (10) NULL,  '
           +' ChannelNumber char (10) NULL, '
           +' BSIC char (10) NULL, '
           +' LAC char (10) NULL, '
           +' HSN char (10) NULL, '
           +' btsIsHopping char (10) NULL, '
           +' BCCH char (10) NULL, '
           +' TCH char (10) NULL, '
           +' NbCell char (10) NULL'
             +' )';
            try
                Query1.ExecSQL;
            except
            end;
     //创建表
     //清除表中数据
            Query1.SQL.Clear;
            Query1.Close;
            Query1.SQL.Text:='DELETE FROM mytable';
            try
                Query1.ExecSQL;
            except
            end;
     //清除表中数据 //导入数据库
            Query1.SQL.Clear;
            Query1.Close;
            Query1.SQL.Text:='BULK INSERT test.dbo.mytable FROM '+''''+ 'd:\d.csv'+''''
                              + '  WITH  '
                              +'(  '
                              +'FIELDTERMINATOR ='+''''+','+''''+','
                              +'  ROWTERMINATOR ='+''''+'\n'+''''+','
                              +' FIRE_TRIGGERS   '
                              +')'   ;
            Query1.ExecSQL;
     //数据库导入成功end;procedure TForm1.Button2Click(Sender: TObject);
    begin
          Query1.close;
          Query1.sql.clear;
          Query1.sql.add('select * from mytable ');
          Query1.open;      DataSource1.dataset:=Query1;
          DBGrid1.DataSource:=DataSource1;
          Query1.SaveToFile('D:\aa.xml', pfXML);
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
           Query1.SQL.Clear;
            Query1.Close;
            Query1.SQL.Text:='drop table mytable';
              try
              Query1.ExecSQL;
              except
              end;
    close;
    end;end.