Delphi TQuery 保存到 csv 文件

标签 delphi csv tquery

我想将 TQuery 的内容导出到 CSV 文件,而不使用 3d 零件组件(Delphi 7)。据我所知,这不能用 Delphi 标准组件来完成。

我的解决方案是将内容以 CSV 格式保存在 StringList 中,并将其保存到文件中。

有什么舒服的解决方案吗?

PS:我不想使用 JvCsvDataSet 或任何组件。问题是:这只能用Delphi 7或更高标准的组件来完成吗?

提前谢谢您!

最佳答案

当然可以。

您只需完成正确输出 CSV 内容的工作(正确引用、处理嵌入的引号和逗号等)。您可以使用 TFileStream 轻松编写输出,并正确使用 TQuery.FieldsTQuery.FieldCount 获取数据。

我将把精美的 CSV 引用和特殊处理留给您。这将解决简单的部分:

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;

关于Delphi TQuery 保存到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680017/

相关文章:

python - 大块数据,试图替换一列中的分隔符但不是所有分隔符

sql - 如何查询包含 XML(不是 xml 列类型)的 SQL Server TEXT 列中的值

delphi - 如何实现IServiceProvider?

delphi - 新的自定义组件导致 IDE 崩溃

Delphi DrawThemeBackground在timage上导致白色背景

java - 将具有列表作为属性的 Java 对象写入和读取到 CSV

csv - PowerShell - Import-Csv - 按位置引用列

javascript - 如何在 HTML5 Canvas 中显示 tQuery.World

sql-server - Delphi 4 中的查询优化

Delphi SOAP 响应保存到XML?