Navicat 17 仅通过「导出向导」并选择“Excel 文件 2007 或以上版本(*.xlsx)”且取消勾选“导出为 Excel 97–2003 格式”,才能正确导出原生 .xlsx 文件。
Navicat 17 确实支持直接导出为 .xlsx 格式,但这个“支持”有明确前提:你必须在「导出向导」中手动选择 Excel 文件 2007 或以上版本(*.xlsx),而不是点右键菜单里的“Excel”或依赖默认选项——后者在绝大多数界面位置(如查询结果右键、表节点右键快捷导出)仍指向旧版 .xls。
下面分几个关键动作说清楚怎么做、为什么这么选、以及哪里最容易翻车。
导出向导里选对格式才能生成真正的 .xlsx
Navicat 17 的「导出向导」是唯一稳定输出原生 .xlsx 的入口。其他路径(比如查询结果面板右上角的「导出」按钮、表节点右键直接选“Excel”)默认走的是兼容层,实际生成 .xls(最大 65536 行),不是 .xlsx。
- 必须从表或视图节点右键 → 选【导出向导】,不能从查询结果面板右键走快捷路径
- 在「导出格式」页,下拉菜单里要明确看到并选中
Excel 文件 2007 或以上版本(*.xlsx)—— 注意括号里带*.xlsx字样,这是唯一可信标识 - 如果只看到“Excel 文件”没带版本说明,大概率是旧版
.xls选项,别选
导出前必须关掉“导出为 Excel 97–2003 格式”开关
即使你选了 .xlsx 格式,Navicat 17 仍可能因历史兼容逻辑偷偷启用旧格式导出——只要你在「高级」选项里勾了 导出为 Excel 97–2003 格式(该选项默认常被勾选)。
- 进入「附加选项」页后,务必点击【高级】按钮展开更多设置
- 找到
导出为 Excel 97–2003 格式这一项,把它取消勾选(它和你选的.xlsx格式互斥) - 同时建议勾选
包含列的标题和格式化日期时间为文本,避免日期列被 Excel 自动转成数字
中文乱码?不是编码问题,是文件后缀和打开方式错了
.xlsx 文件本身自带编码信息,不依赖 BOM 或系统编码。如果你导出后双击打开仍是乱码,大概率是你导出的压根不是 .xlsx,或者 Windows 把它关联错了程序。
- 导出完成后,立刻检查文件后缀是不是
.xlsx(不是.xls,也不是无后缀或.csv) - 用记事本或 VS Code 打开该文件,开头如果是
PK二进制头(显示为乱码字符),说明确实是.xlsx;如果是纯文本,就还是 CSV 或 xls - 别用 WPS 直接双击打开——它有时会把
.xlsx当作旧格式解析。用 Microsoft Excel 或 LibreOffice Calc 打开更可靠
手机号、身份证变科学计数法?得在导出前做字段类型干预
.xlsx 导出本身不会改数据内容,但 Excel 打开时会按字段类型自动渲染。Navicat 不控制 Excel 的单元格格式,所以长数字字段(如 id_card、mobile)在 Excel 里仍会变 1.34E+10。
- 解决方案不是改 Navicat 设置,而是在 SQL 查询里提前转字符串:
CAST(mobile AS CHAR)或CONCAT('', mobile) - 如果导出整张表无法写 SQL,就在「导出向导」的「字段」页里,手动取消勾选那些长数字字段,改用自定义查询导出
- 导出后在 Excel 里批量设置列为「文本格式」也行,但属于事后补救,不可靠
真正麻烦的不是怎么点几下,而是所有“看起来像 Excel 导出”的操作路径,背后格式都不一样。你得盯住文件后缀、确认导出入口、关闭旧格式开关——三者缺一不可。否则哪怕 Navicat 17 界面写着“Excel”,你也只拿到一个披着 Excel 外衣的 .xls 或 CSV。











