Delphi TQuery save to csv file

后端 未结 4 2179
太阳男子
太阳男子 2021-02-08 06:44

I want to export content of a TQuery to a CSV file without using a 3d part component(Delphi 7). From my knowledge this can not be accomplished with Delphi standard components.

4条回答
  •  醉酒成梦
    2021-02-08 07:30

    Of course it can.

    You just have to do the work to properly output the CSV content (quoting properly, handling embedded quotes and commas, etc.). You can easily write the output using TFileStream, and get the data using the TQuery.Fields and TQuery.FieldCount properly.

    I'll leave the fancy CSV quoting and special handling to you. This will take care of the easy part:

    var
      Stream: TFileStream;
      i: Integer;
      OutLine: string;
      sTemp: string;
    begin
      Stream := TFileStream.Create('C:\Data\YourFile.csv', fmCreate);
      try
        while not Query1.Eof do
        begin
          // You'll need to add your special handling here where OutLine is built
          OutLine := '';
          for i := 0 to Query.FieldCount - 1 do
          begin
            sTemp := Query.Fields[i].AsString;
            // Special handling to sTemp here
            OutLine := OutLine + sTemp + ',';
          end;
          // Remove final unnecessary ','
          SetLength(OutLine, Length(OutLine) - 1);
          // Write line to file
          Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char));
          // Write line ending
          Stream.Write(sLineBreak, Length(sLineBreak));
          Query1.Next;
        end;
      finally
        Stream.Free;  // Saves the file
      end;
    end;
    

提交回复
热议问题