Delphi10.3的DBGrid之导出为CSV(04)

SQLite3框架  源代码下载

procedure DBGridToCSV(aFDquery: TFDQuery; aCSVFileName: string); // CSV格式
var
  aCSVtext: TstringList;
  i, j: integer;
  tempStr: string;
begin
  aCSVtext := TstringList.Create;

  tempStr := '';                //第一行所有 的列名
  for j := aFDquery.FieldCount downto 1 do
    tempStr := aFDquery.Fields.FieldByNumber(j).FieldName + ',' + tempStr;
  tempStr := Copy(tempStr, 0, Length(tempStr) - 1); // 去掉最后一个 ,
  aCSVtext.Add(tempStr);

  aFDquery.First;              //所有 数据   导出
  while not(aFDquery.Eof) do   begin
    tempStr := '';
    for j := aFDquery.FieldCount downto 1 do  begin

     if ansiPos(',',aFDquery.Fields.FieldByNumber(j).AsString)>0 then
        tempStr:='"'+ aFDquery.Fields.FieldByNumber(j).AsString +'"'  + ',' + tempStr   //如果单元格内有逗号,整个单元外加双引号
     else  tempStr := aFDquery.Fields.FieldByNumber(j).AsString + ',' + tempStr;
    end;
    tempStr := Copy(tempStr, 0, Length(tempStr) - 1); // 去掉最后一个 ,
    aCSVtext.Add(tempStr);
    aFDquery.Next;
  end;


  aCSVtext.SaveToFile(aCSVFileName);
  aCSVtext.Free;
end;

 

procedure TForm13.Button1Click(Sender: TObject);
begin
DBGridToCSV(FDQuery1,'test.csv'); // CSV格式
end;