如何为流程图组织一份 CSV 文件
如何把 CSV 组织成能导入为流程图的样子:表头行放在第一行,按表头名称而不是列的位置匹配,一行一个步骤,以及决定它能否被解析的分隔符、编码与引号规则。
一份 CSV 能变成流程图,是因为它的第一行是写着 QueryChart 列名的表头行,下面每一行都是一个步骤,而且文件是逗号分隔的 UTF-8,含逗号的字段都加了引号。
简而言之
- 表头行必须是文件的第一行——而不是压在报表标题下面的第三行。
- 匹配的是表头名称,不是列的位置;不认识的列会被原样带过并忽略。
- 一行一个步骤,不是一行一条记录。导出文件通常是一份流水,而不是一份定义。
- 逗号分隔的 UTF-8。欧洲区域设置下的分号文件进来会变成一整列。
- 含逗号、引号或换行的字段都要加引号;字面量的引号写成两个引号。
文件就是接口,所以文件本身必须对
CSV 不是电子表格。它是一个纯文本文件,一行一条记录,字段之间有一个分隔符,不携带单元格类型、格式、公式,也没有第二张工作表。这正是每个系统都输出它的原因——服务台、ERP、人力系统和数据库控制台都产出 CSV,而它们除了逗号之外几乎没有别的共识。这也正是导入要么立刻成功、要么以一种看上去什么都没发生的方式失败的原因。
QueryChart 按表头名称读取这份文件。第一行必须是表头行,上面的名称会与编辑器自己的列做匹配——#、形状、方框文字、连线到、连线文字、横向泳道、纵向泳道——而不是与位置匹配,所以你的列排成什么顺序都无所谓,QueryChart 不认识的列会被原样带过并忽略。把 .csv 拖到一张图表的表格区域上,或者把那些行粘贴进去。没有导入向导,也没有需要逐项处理的列映射界面,这就是这笔交换:映射住在你的表头行里,而不是住在一个对话框里。
剩下的部分才是让人白搭进去一个下午的地方,而且没有一样和图有关。一台列表分隔符是分号的机器上存出来的文件,不是逗号分隔的文件。含逗号的字段必须加引号,否则它会变成两个字段。字节顺序标记在任何编辑器里都看不见,却照样黏在第一个表头名称上。一个写作 007 的步骤引用,在电子表格里走一圈回来就成了 7。这些都是文件的问题,值得在你考虑形状之前先解决掉——/zh/guides/在csv中定义流程图连线 讲的是文件本身能被解析之后,连接列里该填什么。
下面这个示例是一条以正确方式导出的客服工单分级处理流程:十八行,一行一个步骤,一列一列搭起来。请把它当成一份文件来读,而不是当成一张图片——图是列填对之后你得到的东西,而不是你要费劲去做的东西。如果你想直接拿一份已经正确的文件来照搬结构,CSV 模板集里每一张图都附了生成它的那份文件。
同一份 CSV,一列一列地读
客服工单分级处理,十八行。打开表格面板,看看每个阶段填的是文件里的哪一列。
表头行与一行一个步骤
文件的第一行给出列名,下面每一行是一个步骤。第 1 到第 6 行从“提交工单”一路到“按影响范围与紧急程度确定优先级”,各占一行,除了标签什么都没有。这是一份文件能被导入的最低要求,也正是多数导出文件已经错了的地方,因为它们是一行一张工单,而不是一行一个步骤。
形状这一列
形状是解析器要匹配的取值,所以拼写是死的:第 1 行开始,第 2 行流程,第 3、5、7、9 行决策。“信息是否足以着手处理?”和“处理方法是否奏效?”之所以是菱形,是因为单元格里写着决策,而不是因为句尾有个问号。解析器不认识的取值会一声不吭地退回流程,一个判断就是这样变成了矩形,分支标签还挂在上面。
加引号的连线到与连线文字
第 5 行“是否在催办期限内收到回复?”的连线到是 6,18,连线文字是 已收到回复,无回复——两个按位置配对的列表,两者都含有半角逗号,所以在文件里两个字段都要加引号。第 13 行的方框文字“是彻底修复还是临时绕行?”不含半角逗号,所以不必;但凡标签里出现一个,就同样要包起来。把这些引号去掉,这一行就多出一个字段,整行往左错开一列。
泳道列与成品文件
最后两列和其他列一样按名称匹配:横向泳道承载提交、分级、一线、升级和关闭,纵向泳道承载提单人、服务台和专家团队。填上之后,同样这十八行画出来就是一张泳道图,止于第 17 行的“工单已关闭”和第 18 行的“提单人无回复即关闭”。除了多两列纯文本,这份文件什么都没变。
运作方式
只导出一张干净的表
无论数据来自哪个系统,只导出那张网格,别的都不要。报表标题、日期戳、一行 logo、合并的表头、小计行和末尾的空行,最后都会成为文件里的行,而每一行都会被读成一个步骤。如果导出有“原始数据”或“不带格式”的选项,选那个。
让表头行成为第一行
用纯文本编辑器而不是电子表格打开这份文件,看它的第一行。它必须是表头。以两三行元数据开头的导出文件常见到足以让这成为第一件要检查的事,而删掉那几行就是全部的修复动作。
把表头改成 QueryChart 的列名
把表头单元格设为形状、方框文字、连线到、连线文字、横向泳道和纵向泳道。匹配依据是名称,所以这些列可以排成任何顺序,你自己要留的列——工单号、系统、周期时间——原封不动留在文件里就行;它们会被带过并忽略,而不是被拒绝。
把行压缩成一行一个步骤
导出文件通常是一份流水:一行一张工单、一条订单、一个案件。而流程图要的是一行一个不同的步骤,所以请先做透视或去重,把数量留给后面分析用。一份四千行的文件是一个数据集,不是一条流程,导进来会得到四千个方框。
给步骤编号并填写连线到
连线到填的是目标行从 1 开始的位置,只数数据行,所以表头下面的第一个步骤是 1。它不是工单号、步骤代码,也不是源系统里的任何东西。一个步骤通向两处时,把两个数字用逗号分隔填进同一个字段,并给这个字段加引号。
把分隔符和编码改对,然后把文件拖进去
存成逗号分隔的 UTF-8,然后把 .csv 拖到一张新图表的表格区域上。请把第一次渲染当成对文件的一次检查:行数应当与你的步骤数一致,每一列都应当落在你预期的地方。整份文件进来变成很宽的一列,那是分隔符的问题,不是导入失败。
应避免的错误
扩展名是 .csv 的分号文件
在一台区域列表分隔符是分号的机器上,“另存为 CSV”写出来的是分号,而文件名照样以 .csv 结尾。它进来会变成一整列,所有值都挤在里面。请以逗号重新导出,或者导入前在文本编辑器里把分隔符替换掉。
表头行不是第一行
报表导出习惯在数据上面放一个标题、一个日期区间和一行空行。QueryChart 把第一行读作表头,于是那几行成了列名,你真正的表头成了一个步骤。请把表头上面的东西全部删掉。
分支标签里的半角逗号
加引号能保护一个字段不被 CSV 解析器切开,但连线文字自己还要按半角逗号切分,才能把标签和目标配上对。所以一个写成“是, 需审批”的分支,无论怎么加引号都会变成两个标签。请改用全角逗号或者换个名字——短标签本来在图上也更好看。
转一圈之后丢掉的前导零和长数字
CSV 没有类型,所以由打开它的程序说了算。用电子表格打开再存回去,007 就成了 7,一个十六位的参考号成了 4.12346E+15,3/4 成了一个日期。请在文本编辑器里编辑这份文件,或者把该列按文本导入,并核对那些本是代码而不是数字的值。
把你的 CSV 导入成流程图
打开客服分级处理示例,下载它的 CSV,看清确切的列名和引号用法,然后把你自己的文件拖上去覆盖它。
相关指南
常见问题
我的 CSV 里列的顺序要紧吗?
不要紧。匹配依据是表头名称,所以方框文字可以是第四列,形状可以是最后一列。要紧的是这些名称必须是编辑器使用的那几个——形状、方框文字、连线到、连线文字、横向泳道、纵向泳道——并且它们要在文件的第一行上。QueryChart 不认识的列会被原样带过并忽略,所以不必先把工单号、系统名和耗时删掉。
文件该用什么分隔符和编码?
逗号和 UTF-8。分号是最常见的失败:在一台使用欧洲列表分隔符的机器上,Excel 存出来的“CSV”是分号分隔的,这样的文件导进来就是一整列。编码问题表现为带重音的字符变成乱码——请选“CSV UTF-8”而不是普通 CSV。如果除了第一列以外每一列都匹配上了,请怀疑字节顺序标记:它在编辑器里看不见,却黏在第一个表头名称上,于是那个名称再也匹配不上。
含逗号的字段该怎么写?
把整个字段用双引号包起来。导出文件里最常见的例子是部门名,比如一个写作 财务, 应付 的泳道值,在文件里必须包成一个字段,否则它会变成两列。加引号的字段内部如果要写一个字面量的双引号,就写成两个引号;字段里换行也是合法的,尽管一个方框标签很少需要。两个连接列几乎总是需要加引号,因为“6,18”和“已收到回复,无回复”按设计就含有分隔符——正是它把标签和目标配上了对。
我的导出文件是一行一张工单,不是一行一个步骤,还能用吗?
不能直接用。一份交易流水描述的是发生过几千次的事情,而流程图描述的是本该发生一次的事情。请先把它归约成那些互不相同的步骤——按活动列或状态列做一次透视通常就够了——并把数量单独留着,因为那才是流程分析中有意思的另一半。/zh/guides/csv转流程地图 就是在一份形状完全相同的导出文件上走了一遍这个归约过程。
到底哪几列是必需的?
只有方框文字也能导入:你会得到一列互不相连的方框。加上连线到,它就成了流程图,因为那正是承载关系的那一列。形状、连线文字和两个泳道列都是精细化——把判断画成菱形、给分支贴上标签、把步骤放进阶段和负责人里。如果你更愿意从一份结构已经正确的文件开始,CSV 模板集里每一张图都附了可下载的 CSV。