B端產品設計必看,Excel批量導入的知識點講解(上篇)

10 評論 14334 瀏覽 183 收藏 16 分鐘

當你接到一個Excel批量導入的需求時,你會怎么做?如何做,才能夠讓它更加完善?作者結合自己的一些做法,整理了一些我對Excel批量導入這一塊的理解,希望對你有所幫助。

背景

上周五的時候,深夜在搞一個Excel批量導入的需求,然后突然意識到這個導入需求不是那么簡單的,甚至可以說任何一個導入需求如果要做到比較完善其實都不簡單。

然后突然就有了靈感,我把之前做過的一些導入的需求大概看了一下,然后整理了一些我對Excel批量導入這一塊的理解,把一些可能容易被忽視的知識點給大家拆解一下。一方面是對我自己過往知識做一個總結,另一方面也是把這個東西做成一個“組件化方案”,后續在其他場景要用的時候,直接拿來用就好了,最后也可以把這個東西分享給大家,讓大家也能做到開箱即用。

本文我打算拆成上下篇來講,上篇是講Excel導入的一些校驗邏輯和補充知識,下篇再來講怎么設計Excel的導入模板,怎么做一些好的交互體驗。

一、導入的幾個步驟

一般來說,B端產品的Excel的導入處理邏輯,可以拆解出這么幾個步驟:

  1. 上傳Excel模板,解析模板文件;
  2. 校驗模板文件中的字段,確認數據合法合規;
  3. 執行業務邏輯,一系列邏輯處理;
  4. 插入數據庫表中,導入完成;

二、導入時的幾個核心點

既然有4個核心的步驟,那么也意味著這4個步驟都有可能會出錯,我們可以對這4步分別梳理,確認一些比較常見的異常場景,然后給出對應的解決方案。

1. 上傳并解析模板

  • 模板文件格式不對,例如只支持.xlsx,但是上傳了.pdf,就會報錯;
  • 模板文件體積太大,例如僅支持上傳5MB以內的文件,但是上傳了一個10MB的文件就會報錯;
  • 模板無法解析,由于一些Excel會加密,空白或者是已損壞無法打開,導致文件解析失?。?/li>
  • 模板數據量太大,例如只支持一次導入5000行數據,如果超過就會報錯或者只取前5000條;
  • 模板格式錯誤,例如修改了模板的一些表頭或者是列,導致無法解析匹配也會報錯;

2. 校驗模板文件中的字段

  • 字段校驗失敗,例如字符長度,字符為空,字符格式,字符校驗規則不通過等,就會報錯;
  • 字段重復,例如第一行和第二行的內容重復了或者大多數重復,就會報錯(視業務規則而定);
  • 字段之間的邏輯關系不對,例如填了A字段,那么B字段就必須存在等,這些字段之間存在預設的某些邏輯關系,可以在校驗模板文件中的字段這個階段去做對應的判斷,也可以放在業務邏輯層的時候去判斷:例如結束時間必須要大于開始時間,A列的值必須要小于B列的值等;

3. 執行業務邏輯

  • 導入的字段在系統中不存在,例如導入SKU庫存,但是系統中不存在該SKU,就會報錯;
  • 導入的數據和要更新的數據不匹配,例如導入了訂單的3條明細,但是訂單實際只有2條明細,就會報錯;
  • 用導入的數據去執行一些業務邏輯失敗,例如批量更新單據的狀態,但是單據是不可更新的狀態,就會報錯;
  • 還有其他一系列和業務邏輯相關的判斷,都會在這一層做處理;

4. 插入數據庫表中的時候

  • 數據寫入失敗,由于超時或者程序錯誤,則導致報錯;
  • 數據重復導致插入失敗,也會報錯;
  • 還有一些其他的程序異常的場景,都會報錯;

三、導入的一些補充知識

1. 導入是部分成功還是全部成功?

在Excel導入的時候,數據量可能會比較多,如果1000條數據只要有1條失敗,那么這1000條都不允許導入,那這種就是屬于“全部成功”的邏輯,即要求全部成功才可以正常導入。如果1000條數據有1條失敗,但是999條可以導入,那么這種就是屬于“部分成功”的邏輯,總體來說,導入支持部分成功、部分失敗,對用戶的體驗來說會好很多。

如果是“全部成功”的模式,那么最好也是能將Excel所有的行數據處理完,然后將失敗了的信息單獨列出來,方便用戶定位問題,修改模板。這里還需要注意一下,最好避免“擠牙膏式”的報錯。如果某一行有多個錯誤,那么直接將所有的錯誤都呈現出來,不要一次只報一個錯,然后客戶反復修改,造成不好的體驗。

如果是“部分成功”的模式,那么導入之后會直接告訴導入的結果,成功了XX條,失敗了XX條,還可以單獨下載失敗的內容。

2. 同步導入還是異步導入?

同步導入,就是在導入Excel的時候頁面一直在處理中,需要等待導入完成之后才可以進行其他操作。

異步導入,就是導入Excel的任務提交之后,會在后臺運行導入的任務。這個時候用戶可以進行其他操作,等到導入任務處理完成之后再通過站內消息來通知處理。

如果Excel數據量很大,業務邏輯比較復雜,耗費時間的導入,那么建議使用異步導入;如果是小數據量,導入邏輯不復雜,速度也很快的,那么就使用同步導入即可。

同樣的道理,針對導出(下載),也可以使用一樣的邏輯去處理。

3. 是導入覆蓋,還是更新?

這個是屬于業務層的判斷了,導入覆蓋的意思就是導入的數據直接覆蓋已有的數據,直接簡單粗暴。

導入更新則是每條導入的數據都要和已有的歷史數據進行比較,如果有相同的就更新,沒有就插入。

具體自己看業務場景來取舍,一般來說導入更新的場景比較多,直接覆蓋的比較少。

4. 按表頭名稱還是表頭坐標來匹配

Excel是一個二維表,有X軸和Y軸,也就是行和列。每一列是從A開始一直到Z,然后AA到AZ這樣的順序;每一行則是從1開始一直遞增。A1是一個坐標,表示第一行第一列;B3表示第二列第三行……

按表頭名稱匹配,就是預設的Excel模板,先解析出第一行表頭的字段,然后用表頭字段和系統的字段進行完全匹配,如果匹配上了,那么這一列就是特指某個字段了。表頭的字段往往是第一行,可以理解為一個Key,第二行開始就是Value了。

按表頭名稱完全匹配

按表頭坐標來匹配,就是不一定把第一行當做表頭的Key,而是通過坐標來確定這個表頭的Key是什么。例如第一行可以寫一堆填表須知,然后第二行才是真正的表頭,第三行開始才是Value值。那么A2 B2 C2就是表頭字段,A3 B3 C3往下的就是具體的值了。

按表頭坐標匹配

5. 固定模板導入和解析模板導入

固定模板導入,就是我提前預設好對應的Excel模板,然后用戶根據我的Excel模板來填寫對應的字段,然后導入的時候按字段的名稱去匹配或者按字段所在的坐標(A1:B1:C2)去匹配相應的數據,這種方式的大前提就是用戶不能修改模板的順序或者模板的字段名稱等。也是最常用的一種導入的設計方案。

預設模板導入

解析模板導入,就是我根據你自定義的模板導入,然后我把你的列都解析出來,然后將你Excel的列和系統中存在的字段進行手動的匹配,匹配之后就可以保存為一個解析模板。后續再導入類似結構的Excel的時候就可以直接用這個模板去解析了。比較適合那種數據來源比較多,Excel模板有很多種多樣的場景。

解析模板導入

四、一些參考資料

最后分享一些不錯的Excel導入設計的競品,如果你想在這方面找一些優秀案例學習一下,那么可以看看下面的幾個競品:

  • https://hc.huoban.com/tables/8a9a/974b
  • https://qingflow.com/help/docs/6114c2ced601550046421d83
  • https://hc.jiandaoyun.com/doc/9084

五、總結

今天在收集Excel導入相關的知識的時候,我突然腦海中蹦出來了這么一個詞:叫作“組件化競品”或者“競品組件化”,可以簡稱為“組件化產品方案”。

怎么理解這個詞呢?

首先,什么是組件化?我們可以簡單地把組件理解為完成某些特定功能的模板,例如Axure中的母版或者前端框架中的組件。

它的特點是:聚焦于某個小的場景,解決某個小的需求,而且和復雜的實際業務本身沒有太多耦合性。例如前端的一些輸入組件,圖片上傳組件,還有產品的一些Axure組件等。

那么,我們在再來看一下什么是競品,競品這個詞產品經理們肯定是不陌生的。簡單理解就是同行,相同的競爭者,我們都需要做相似的事情。很多時候我們關注的都是直接競品,即做的業務和方向和我們很相似,系統方案上也大同小異的。但是除了直接競品之外,我們還有很多時候會需要借鑒間接競品或者非競品的一些產品設計,例如一些大廠的交互設計,業務邏輯設計等。

這兩者一組合,就得出來了我想要表達的:通過一些組件來啟發自己找一些競品來參考學習,設計能提升自己工作效率的組件化方案。

在日常工作中,我們能或多或少會做很多重復的事情,這些重復可能是重復自己,可能是重復別人,可能是重復之前的公司等,總之就是有很多事情的解決方案其實是可以拿來即用的。

例如,登錄注冊相關的業務,基本上都大同小異,我在A公司做過一次,那么我在B公司的時候也需要做一遍,那我直接拿A公司的方案是最快的。同樣的道理,Excel的導入和導出方案也是屬于一次整理輸出之后,后續就可以直接復用,只需要做很小范圍的改動。

Excel的導入和導出,這種設計方案是從多個競品系統,甚至都可以不是競品的系統上拿來借鑒使用,這就是“組件化競品”的意思。

花時間把日常的工作中可以抽出來作為“組件”的內容整理一下,然后分別找時間去查閱相關的優秀的解決方案(競品),然后把它整理成一套可復用的“組件化競品”,后續要用的時候就可以做到開箱即用。

這件事情,我大約是在1年前意識到,然后半年前開始踐行的,所以大家會發現我的語雀知識庫有很多經驗的總結,其實就是“組件化競品”的縮影。

希望上面的一些思考,會對你有幫助。

專欄作家

我叫維他命(Vitamin),微信公眾號:PM維他命,人人都是產品經理專欄作家。前PHPer,做過在線教育類產品,也做過5年多的跨境供應鏈方向的產品,現任某跨境電商ERP的產品負責人。主要專注于WMS/OMS/TMS/BMS/ERP等領域,分享跨境和供應鏈相關的產品知識。

本文原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于 CC0 協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 請問下樓主,表頭字段只有個位數情況下,表頭校驗需要報錯提示具體哪個數據錯誤嗎,還是統一報錯也可以,字段校驗可以在失敗記錄表里面展示所有錯誤原因比較好做也直觀

    來自浙江 回復
  2. 這是做了幾年產品的經驗呀?

    來自上海 回復
    1. 6年

      來自廣東 回復
  3. 寫的太好 太詳細了

    來自上海 回復
  4. “解析模板導入,就是我根據你自定義的模板導入,然后我把你的列都解析出來,然后將你Excel的列和系統中存在的字段進行手動的匹配,匹配之后就可以保存為一個解析模板。后續再導入類似結構的Excel的時候就可以直接用這個模板去解析了。比較適合那種數據來源比較多,Excel模板有很多種多樣的場景”

    這一段 寫得太口語,我我你你的,看得暈,我覺得可以更書面表達的。
    其他都很棒!

    來自湖北 回復
    1. 哈哈,好的,后續我注意一下。

      來自廣東 回復
  5. 去年剛好做了一個一樣的功能,除了你上面講到的功能層面的,其實還有一個非常重要而且容易忽略的點,就是數據審計、日志記錄。還有就是現在國內的導入基本上都同質化了,各種「借鑒」,比如上面提到的 jiandao、qingliu、huoban 甚至是 yida、chuanyun、mingdao 的導入設計都大同小異。

    來自湖北 回復
    1. 嗯 要做導入記錄,導入的日志是吧?

      來自廣東 回復
    2. 日志記錄根據對數據的嚴格性而定吧

      來自浙江 回復
  6. 之前實習的時候做過這個功能,踩了很多文中提到的坑,贊一個

    來自北京 回復