天天看點

Excel導出總結

文章目錄

      • 業務
      • 流程圖
      • 項目位址

業務

場景一:根據商品分類或品牌或商品屬性查詢出商品資訊

場景二:根據商品分類或商品屬性查詢屬性資訊

查詢分類時,需要查到最末級分類,也就是選擇一級類目時,查詢出二級類目、三級類目的資料,當選擇二級類目時,則查詢二級類目、三級類目資料,查詢三級類目時,則查詢三級資料,三級類目是最後一級類目

由于資料量很大,是以在導出時采用多線程查詢db資料,一個線程負責寫excel操作。

查詢出db資料後,又要對資料進行單個查詢處理,補齊資料對象,是以在循環時采用

stream 的 parallelStream

來處理,将結果添加到别一個集合時,注意要使用線程安全的list 例如:

Collections.synchronizedList(new ArrayList<>(10));

流程圖

Excel導出總結
通過有界阻塞對隊FIFO,實作生産者和消費模式,隊列滿時,則生産者阻塞,隊列為空時,消費者阻塞,查詢db資料是多個線程,而寫 excel 檔案的一個sheet是一個線程(經測試 excel 在建立行時隻能從上向下建立,

當用多個線程在一個sheet裡建立行并寫資料時,會出現打開異常提示或資料出現空白,因為多線程建立行寫資料時,可能後面的行已經建立了,但前面的行還沒有建立,在excel中是不允許的,所在這裡用單線程來建立行和寫資料

項目位址

Excel 多線程導出

繼續閱讀