⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
Excel 导出

DuckDB 支持将数据导出到 Excel .xlsx 文件。但是,不支持 .xls 文件。

导出 Excel 工作表

要将表导出到 Excel 文件,请使用 COPY 语句和 FORMAT xlsx 选项。

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx);

查询结果也可以直接导出到 Excel 文件。

COPY (SELECT * FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

要在 Excel 文件中将列名作为第一行写入,请使用 HEADER 选项。

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, HEADER true);

要命名生成的 Excel 文件中的工作表,请使用 SHEET 选项。

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, SHEET 'Sheet1');

类型转换

由于 Excel 实际上只支持存储数字或字符串(相当于 VARCHARDOUBLE),因此在写入 XLSX 文件时会自动应用以下类型转换:

  • 数字类型会转换为 DOUBLE
  • 时间类型(TIMESTAMPDATETIME 等)会转换为 Excel 的“序列号”:日期是自 1900-01-01 以来的天数,时间是一天的分数。然后,这些序列号会应用“数字格式”,以便在 Excel 中打开时显示为日期或时间。
  • TIMESTAMP_TZTIME_TZ 分别转换为 UTC TIMESTAMPTIME,时区信息会丢失。
  • BOOLEAN 类型会转换为 10,并应用“数字格式”使其在 Excel 中显示为 TRUEFALSE
  • 所有其他类型都会转换为 VARCHAR,然后作为文本单元格写入。

当然,您也可以在将列导出到 Excel 之前,显式地将它们转换为其他类型。

COPY (SELECT CAST(a AS VARCHAR), b FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

另请参阅

DuckDB 也可以导入 Excel 文件。有关 Excel 支持的更多详细信息,请参阅Excel 扩展页面