上一篇文章给大家介绍了Excel导入的核心步骤,不同的步骤有着自己的作用与逻辑 ,本文又补充了一些产品经理在做好Excel导入功能时需要注意的细节,希望对你有所启发。

excel二次开发教程(B端产品设计必看)(1)

前言

上一篇讲Excel导入的时候,提到有4个核心的步骤,在设计导入功能的时候要特别注意,不同的步骤有不同的职责和不同的校验逻辑,同时也补充了一些Excel导入的知识点。这一篇,来和大家分享一下,做好一个Excel导入功能,产品经理有哪些需要注意的细节之处。

这些细节之处虽然有些看似很碎,但是只要花点时间整理好了之后,就可以形成可复用的“组件化产品方案”了。

一、Excel模板的制作

Excel导入模板的制作说简单也简单,说复杂也复杂。简单是因为本质上就是把字段定义好,然后把对应的规则整理好,可以理解为一种特殊的“输入表单”。复杂是因为字段比较多,字段之间的关系也多,再加上用户填写的约束性比较弱,各种细节糅合在一起之后就会感觉做一个好用的Excel模板也不是那么简单的样子。

Excel导入的模板需要根据导入的业务而灵活变动,一般来说从简单到复杂,有这么几种类型的模板:

  1. 单Sheet,字段同级的模板,也就是只有一个Sheet表,一般字段也不是很多,而且字段关系是同一级的,没有父子级关系;
  2. 单Sheet,字段有父子级的模板,也就是只有一个Sheet表,字段可能较多,关键是字段关系的父子级的,即主档和明细同时导入;
  3. 多Sheet,而且多个Sheet之间有逻辑关系的模板,这种Excel导入的模板填写也比较麻烦,涉及到的逻辑校验也比较麻烦;

1. 单Sheet且字段同级的模板

这种是最常见也是最简单的Excel导入模板,示意图如下:

excel二次开发教程(B端产品设计必看)(2)

黄色背景的为必填项,灰色的为非必填的内容,如果有一些字段需要特殊介绍,则使用批注的方式进行说明。也有一些系统会预先填充一些参考案例,或者是在第一行做一些详细的文案说明。

excel二次开发教程(B端产品设计必看)(3)

有赞的商品导入示意图

excel二次开发教程(B端产品设计必看)(4)

第一行有详细文案说明模板

2. 单Sheet,字段有父子级关系的模板

由于有一些字段是有父子级关系的,所以在制作模板和解析模板的时候就和第1种有一些细微的区别,是要特别注意处理的。

例如导入订单,一个订单可能会有多条商品信息,这就是存在一对多的关系。如果遇到这种场景,一般有两种做法:

  1. 一种是将所有字段打平,平铺展示;
  2. 一种是按子级的数据为最小粒度展示,父级的字段会有重复,有需要的时候可以用标识号来确定同一父级;

所有字段都打平展示,模板看起来会稍微清爽简洁一些,但是由于把子级的数据放在了最后面,为了方便用户填写以及程序解析模板,就会控制子级的数量级。例如该模板就是限制了最多10个子级,也就意味着一个订单最多只有10条商品,如果超过了这个量级用这个模板导入就会失败。

excel二次开发教程(B端产品设计必看)(5)

所有字段打平展示

按子级的数据为最小粒度展示,好处就是可以纵向的录入很多个子级(超过10个),但是坏处也很明显,父级的一些数据,例如订单号,仓库代码,地址信息等都会重复填写,除了不太美观之外,还有可能会有不同行的数据填错了有差异,不知道取哪个为准的困扰出现。

excel二次开发教程(B端产品设计必看)(6)

按子级为最小粒度展示

3. 多Sheet同时导入

有些时候,用一个Excel表无法同时导入数据,用两个Excel表又感觉操作比较麻烦,那么可以考虑使用同一个Excel表但是多Sheet的方式导入。例如之前在做尾程的物流报价的时候,经过业务分析发现一共有5种计费方式:

  1. 总价模式,只需要导入“总价表”的数据即可;
  2. 单价模式,只需要导入“单价或续重价表”的数据,同时计费模式选择为“单价”即可;
  3. 续重价模式,只需要导入“单价或续重价表”的数据,同时计费模式选择为“续重价”即可;
  4. 总价 单价模式,则需要同时导入“总价表”和“单价或续重价表”的数据,同时将“单价或续重价表”的计费模式选择“单价”即可;
  5. 总价 单价模式,则需要同时导入“总价表”和“单价或续重价表”的数据,同时将“单价或续重价表”的计费模式选择“续重价”即可;

excel二次开发教程(B端产品设计必看)(7)

为了让用户更好地理解这个表格导入的逻辑,我还做了一个“说明”的Sheet。多Sheet表导入背后会涉及到比较多的逻辑,因为多个Sheet之间有逻辑关系,所以能不使用这种方式是最好,实在避免不了,那么就要做好相关的逻辑说明和操作指引。

除了上述提到的3种模板之外,我们还会经常遇到遇到实际要导入Sheet1,但是由于表格填写的时候有很多字段需要有参考值,所以必须将这些参考值放在Sheet2或者Sheet3的场景,例如下面的一些案例:

从其他Sheet中选择一些字段的可选值

excel二次开发教程(B端产品设计必看)(8)

从其他Sheet中选择一些字段的可选值

我们在制作模板的时候,可能只需要制作Sheet1主表,然后用户在下载模板的时候,需要将一些预设的可选值动态的插入到模板的其他Sheet中。例如导入订单/出库单这样的场景下,需要选择仓库,选择物流渠道等,这些信息是动态的,需要每次下载模板的时候获取这些信息然后插入到相应的Sheet种。而国家/地区简码和说明等内容,则可以在制作模板的时候就提前把数据填充好。

二、展示导入失败的信息

聊完了Excel模板的制作之后,还有一个场景的需求也需要注意一下,那就是导入失败的信息怎么展示。我大概找了一些竞品看了之后发现,大家普遍有这么几种玩法:

  1. 导入失败的内容直接在页面展示,告知第多行错误,某某某字段不能为空或者XXX校验未通过;
  2. 导入失败的内容不在页面展示,而是让用户下载错误的信息,自己进行修改,然后重新导入;

从用户体验的角度来说,提示成功多少,失败多少,然后支持用户下载失败的结果是更好的做法。

excel二次开发教程(B端产品设计必看)(9)

当用户下载失败结果之后,怎么展示失败的原因是有一些小细节在里面的,主要有这么几个点:

  1. 错误原因是展示一个还是多个?
  2. 错误字段是否要标记背景色或者突出文字?
  3. 如果有一些行是正确的,有一些行是失败的,但是这些行是属于同一个单据怎么展示?

1. 错误原因展示一个还是多个?

excel二次开发教程(B端产品设计必看)(10)

关于这一点,我建议建议一定要展示多个,把一次性能校验出来的结果都展示出来,避免挤牙膏式的报错。用户在导入Excel过程中的报错都要谨慎处理,因为修改模板,然后导入,再下载错误模板,打开查看错误,在修复后导入……这个链路太长了,很容易失去耐心直接发毛。

之前我在测试一个导入功能的时候,导入了10次都失败了,每次反反复复修改模板,当时的心情真的是想骂人。但是又转念一想,这不是我自己做的吗?骂自己岂不是尴尬,还是耐着性子赶紧优化了吧。

2. 错误字段是否要标记背景色或者突出文字?

excel二次开发教程(B端产品设计必看)(11)

错误详情展示-摘自轻流 关于这个点,我感觉是见仁见智,能标记出来肯定是利于用户去修改的,我会倾向于标记一下,注意不要用太浓烈的颜色,不然会很丑。而且用户修改完了这个字段之后最好是可以去掉这个背景色,不然数据量一多就很容易形成干扰了。

3. 同一个单成功的行需要展示吗?

excel二次开发教程(B端产品设计必看)(12)

必要的时候正确的信息也展示 因为下载的是失败记录的模板,虽然有一些行是正确的,但是由于整个单没有成功,所以这些正确的行还是会一起展示,只不过在展示的时候需要对正确的行做一个特殊说明。

例如,同一个订单购买了3个IP,其中的1个IP是正确的,但是另外2个IP是有问题的,所以导致这个单不能导入发货完成,所以下载失败记录的时候也会把正确的信息带出来,提示用户这个订单实际是需要导入3个IP,只有2个是有问题的、需要处理的。

三、Excel导入的一些规范

一个稍微复杂点的系统一般都是由多个产品经理来分别负责不同的模块,也就是同样是导入Excel的功能,不同的人来做会有很多不一样的风格特色,而且这一块的细节往往容易被人忽视掉。为了降低用户使用系统时的割裂感,最好是可以为产品团队制定一份关于Excel导入的规范,具体内容可以自由发挥,因地制宜。下面,我分享一下,我之前为团队制定的一份“文件导入规范”,给大家参考一下。

1. 文件命名

默认导入的模板文件的名称都用英文,而不是中英文。英文单词之间用大驼峰的方式连接,英文与数字或者其他隔断性词(Import)连接时,使用下划线“_”

1.1 导入模板文件命名

英文.xlsx

示例:Zone_Import.xlsx

说明:用英文做模板名是考虑到用户可能是海外的员工,大概率会看不懂中文。如果想要做的细节一点的话,可以根据系统的语言来切换下载不同的导入模板,但是这样维护的成本比较高,所以我就选择全部用英文了。

1.2 导入失败文件命名

Error_原文件名_年月日时分秒.xlsx

示例:Error_Zone_Import_211119144400.xlsx

说明:导入失败的文件名,会在原模板文件名的基础上,增加前缀和后缀。前缀是“Error”,后缀是“时间”。

1.3 打印/下载PDF文件命名

英文_年月日时分秒.pdf 示例:PickingList_211112164123.pdf

1.4 导出Excel文件命名

英文_年月日时分秒.pdf 示例:PackingList_211112164123.xlsx

2. 文件格式相关

  • 导入Excel的时候,要对文件格式校验,若不符合规定的文件格式,导入即报错;
  • 最好是在前端层做控制,在选择本地文件的时候,就限制只能选择.xlsx格式的文件,降低用户找文件的成本;
  • Excel导入文件格式规定为.xlsx,打印/下载文件格式规定为pdf,xlsx等;

3. 文件导入数量规定

  • Excel导入文件,一次仅支持导入一个文件,不能多选;
  • 上传图片可一次性支持多个,上限暂时未规定,看具体情况自己灵活设定;
  • Excel导入文件的体积大小默认是为5M以内,如果有大批量的数据导入则可视情况而定做调整;
  • 图片上传的体积大小默认也是5M以内,一般情况下上传后都需要进行压缩,便于后续的读取展示;
  • Excel导入的行数默认是不超过1000行,超过1000行的部分不做处理;如果有大批量数据导入可以视请客认定做调整;

4. 文件导入上传机制规定

  • 同步导入,文件导入后需要等响应了结果之后才可以继续其他操作;
  • 异步导入,文件导入后会自动加入异步任务中,此时可以去执行其他操作;
  • 数据重复–支持覆盖(看情况而定);
  • 数据重复–上传失败(看情况而定);
  • 数据重复–跳过(看情况而定);

5. Excel模板的字段元素

  • 必填、选填规定:黄色文本框(#FFF836)为必填,灰色文本框(#BFBFBF)为选填;
  • 单元格样式规定:全选所有表格,设定单元格样式为左对齐,微软雅黑12号,文本格式;
  • 表头规定:字段排列位置固定不允许更换,采用按坐标匹配的方式来确定字段;
  • 表头字段:采用英文 中文的方式展示,默认情况下要尽量给足够的列宽,便于用户查看并填写;
  • 批注:目前统一为中文批注,如有需要注明英文的,也可以灵活使用。批注字体也用微软雅黑,字体建议用10,便于展示更多信息;

6. 错误原因的展示

  • 下载导入失败的Excel文件,错误失败原因在第一列;
  • 错误列表头文字为(Error/错误原因),背景色为红色(Red);
  • 错误列一次性给出能判断的所有错误信息,多条错误信息之间用英文逗号”,”分隔;

7. 模板Sheet定义

  • 如果只有一个Sheet,则不做名称修改
  • 如果有多个Sheet,第一个Sheet可以用“XX信息”名,例如“商品信息”,“订单信息”;后续的Sheet则按时间的内容而确定名称,例如“国家/地区二字码”,“渠道信息列表”
总结

Excel导入的门道如果要拆碎来讲的话会有很多内容,很多细节,通过这两篇文章的输出,我发现自己对Excel导入的大多数场景和玩法都有相关的沉淀和总结了,受益颇深。

这些沉淀的知识就是我在上一篇文章中提到的“组件化产品方案”,我将自己遇到过好的导入案例和资料沉淀在知识库中,后续要做类似的功能的时候,直接拿来即用就好了。

希望这两篇文章除了能帮助大家更好地掌握Excel导入中的一些细节之外,还能通过这个案例更加深刻地理解“组件化产品方案”的思维。掌握这个思维方法,可以真正有效地提升你的工作效率,突破自己的能力瓶颈,同时也能很好地赋能团队,创造更大的价值。

专栏作家

我叫维他命(Vitamin),PM维他命,人人都是产品经理专栏作家。前PHPer,做过在线教育类产品,也做过5年多的跨境供应链方向的产品,现任某跨境电商ERP的产品负责人。主要专注于WMS/OMS/TMS/BMS/ERP等领域,分享跨境和供应链相关的产品知识。

本文原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

,