为什么我无法导出数据或看不到Excel选项?

Frappe 让你几乎可以从任何列表中把记录导出为 Excel 或 CSV。如果你找不到导出操作、在数据导出工具中看不到你需要的文档类型,或者导出的文件打开后只有列标题没有数据行,这几乎总是因为缺少权限或存在生效的筛选条件,而不是 bug。无论你是从销售工作区导出客户列表、从财务导出采购发票列表,还是导出任何其他文档类型,情况都一样。

在哪里找到导出

有两种导出数据的方式。两种都可以选择 CSV 或 Excel。

从列表或报表视图导出

  1. 打开列表,例如客户。
  2. 用复选框选中一条或多条记录(或用表头行的复选框全选)。
  3. 点击操作 → 导出。
  4. 在导出数据对话框中,将文件类型设为 CSV 或 Excel,选择要包含的字段,然后点击导出。

从数据导出工具导出

  1. 进入数据导出(使用搜索栏,或从模块侧边栏选择数据 → 数据导出)。
  2. 在选择文档类型中,选择要导出的文档类型。
  3. 选择 CSV 或 Excel 作为文件类型。
  4. 选择要导出的字段,如有需要可添加筛选条件,然后点击导出。

为什么你可能看不到导出,或者看不到某个文档类型

两种导出方式都检查同一个角色权限:导出。角色需要对该文档类型有读取权限才能访问其记录,还需要导出权限才能下载它们。如果分配给你的任何角色都没有某个文档类型的导出权限:

  • 操作中的导出选项仍然会显示,但导出会因权限错误而失败。
  • 该文档类型根本不会出现在数据导出工具的选择文档类型字段中。该字段只列出你有导出权限的文档类型。

如果你在没有权限的情况下尝试导出,会看到:

You are not allowed to export <doctype> doctype
</doctype>

要从列表的报表视图导出,你的角色还需要对该文档类型有报表权限。没有它,报表视图本身就不可用,因此也就没有东西可以导出。

如何修复

系统管理员可以授予权限:

  1. 进入角色权限管理器。
  2. 选择文档类型,例如客户。
  3. 找到该用户所拥有角色对应的行,例如销售用户。
  4. 勾选导出。如果读取和报表尚未勾选,也一并勾选。
  5. 让用户刷新页面后重试。

如果该角色勾选了“仅限创建者”,用户只能导出自己创建的记录。如果他们还需要导出其他人创建的记录,请取消勾选。

为什么导出的文件只有列标题没有数据

如果下载的文件打开后只有一行标题、没有记录,说明导出执行了,但匹配到零行。这种情况发生在:

  • 列表或导出数据对话框中的筛选条件排除了所有记录。对话框的导出类型可以设为筛选后的记录,这样只会导出列表当前筛选条件匹配的内容。如果这些筛选条件太窄,或者指向不存在的值,就什么都匹配不到。
  • 用户权限对记录的限制比你预期的更严格。对某个关联字段设置的用户权限(例如将用户限制到某一个公司)会像作用于列表一样作用于导出。一条记录可能出现在列表中,但如果限制发生了变化,或者“仅限创建者”把你限制在非你创建的记录之外,它仍可能被排除在导出之外。

例如,如果你把客户列表筛选到一个没有客户的地区,并用筛选后的记录导出,下载的文件就只有 ID 列标题,没有数据行。

要修复它:

  1. 清除列表中的筛选条件,或将导出类型切换为所有记录,然后重新导出。
  2. 如果记录在列表中可见,但导出时仍然缺失,请检查角色权限管理器中你的角色是否勾选了“仅限创建者”,并检查用户权限中是否有针对你的用户的任何限制。

如何预防

  • 在导出大型列表之前,清除你不需要的筛选条件,或确认已应用的筛选条件仍然匹配你期望的记录。
  • 设置新角色时,对它需要导出的每个文档类型同时授予读取、报表和导出权限,这样该角色就不会出现部分记录可见但无法导出的情况。
  • 用户与权限
  • 数据导出
  • 编辑报表的导出/打印权限