Delphi10.3的DBGrid之导出为CSV(04)
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;