1. 概述
本程式為用以計算及管理出貨包裝物量所開發的 Visual Basic 表單應用程式。透過使用 EPPlus 函式庫與 Excel 檔案進行資料整合,並根據出貨資料計算各種包裝形態(箱裝出貨、貨櫃出貨、紙箱包裝)的容積與數量。
檔案名稱: T3_3_包裝物量.vb
類別名稱: T3_3出貨包裝物量From
主要函式庫: OfficeOpenXml (EPPlus)
類別名稱: T3_3出貨包裝物量From
主要函式庫: OfficeOpenXml (EPPlus)
2. 程式結構
2.1 使用函式庫
- OfficeOpenXml - 用於操作 Excel 的函式庫
2.2 主要元件
| 元件 | 說明 |
|---|---|
| 表單 | T3_3出貨包裝物量From |
| DataGridView | 多個資料格顯示控制項 |
| 資料庫 | Access Database (資料表: T200, TC10, TC20, TC30等) |
| Excel | 出貨空間計算.xlsx, 出貨貨櫃規格.xlsx |
3. 主要功能
3.1 出貨包裝計算功能
- 箱裝單位出貨容積計算 - 算出以箱為單位的出貨容積
- 散裝單位貨櫃容積計算 - 算出以貨櫃為基準的出貨容積
- 紙箱包裝數計算 - 依據紙箱尺寸分配包裝數量
- 包裝後容積計算 - 彙總包裝後的總容積
3.2 資料顯示功能
- 透過指定出貨日進行篩選
- 出貨資料的容積換算顯示
- 貨櫃規格顯示
- 紙箱尺寸表顯示
- 彙總資料的 DataGridView 顯示
3.3 Excel 連動功能
- 從 Excel 讀取主檔資料
- 將計算結果匯出至 Excel
- 讀取紙箱規格與貨櫃規格
4. 方法詳細說明
4.1 初始化・事件處理常式
| 方法名稱 | 說明 | 處理內容 |
|---|---|---|
| 空間計畫2A出貨包裝物量_Load | 表單載入時 |
・檔案確認 ・版權、有效期限顯示 ・設定指定出貨日 ・各項資料顯示初始化 ・讀取貨櫃規格與紙箱尺寸 |
| 出貨包裝物量計算Bt_Click_1 | 點擊計算按鈕時 |
・以指定出貨日重新計算 ・執行 TC10~TC30 處理程序 ・更新資料網格 |
| 儲存Excel並關閉Bt_Click | 儲存 Excel 並關閉時 | 將計算結果儲存至 Excel 檔案後結束表單 |
4.2 主要計算方法
| 方法名稱 | 輸入 | 處理內容 | 輸出 |
|---|---|---|---|
| TC10_箱裝單位出貨容積 | 指定出貨日 |
・自 T200 資料表擷取箱裝出貨資料 ・依出貨地彙總 ・算出總容積 |
TC10_箱裝單位出貨容積資料表 DataGridView 顯示 |
| TC20_散裝單位出貨貨櫃容積 | 指定出貨日 貨櫃型號 裝填率 |
・擷取散裝出貨資料 ・核對貨櫃規格 ・計算所需貨櫃數 ・算出貨櫃容積 |
TC20_散裝單位出貨貨櫃容積資料表 DataGridView 顯示 |
| TC30_散裝單位全紙箱包裝數 | 指定出貨日 |
・將散裝出貨容積分配至紙箱 ・依紙箱尺寸計算數量 ・考量裝填率並選定最佳尺寸 ・支援複數紙箱計算 |
TC30_散裝單位全紙箱包裝數資料表 DataGridView 顯示 |
| 複數紙箱計算 | 容積(DD) 列號(i) |
・算出 200 尺寸的紙箱個數 ・將剩餘容積分配至適當尺寸 |
更新 DataGridView |
4.3 資料顯示方法
| 方法名稱 | 處理內容 |
|---|---|
| 出貨資料容積換算Dgv顯示 |
・箱裝出貨與散裝出貨的彙總顯示 ・顯示包裝數量與容積 ・3行×5列的網格配置 |
| 出貨包裝總計後容積Dgv顯示 |
・顯示包裝後的最終容積 ・貨櫃數、面積計算 ・紙箱數彙總顯示 |
| 散裝出貨單位_紙箱彙總 |
・依紙箱尺寸彙總 ・橫計、容積計算顯示 ・各尺寸容積計算(從郵局小包~200尺寸) |
| 出貨包裝總計後出貨貨櫃計算 |
・依貨櫃型號彙總 ・貨櫃外部容積計算 ・依據出貨資料區分進行處理分支 |
4.4 Excel 處理方法
| 方法名稱 | 處理內容 |
|---|---|
| 出貨貨櫃規格Dgv顯示 |
・從 "出貨空間計算.xlsx" 讀取 "出貨貨櫃規格" 工作表 ・顯示 31型、40型、51型、60型 的規格 |
| 紙箱尺寸表Dgv顯示 |
・從 "出貨空間計算.xlsx" 讀取 "紙箱規格" 工作表 ・顯示從郵局小包~200尺寸的規格 |
| TC00_出貨貨櫃規格匯入 |
・將 "出貨貨櫃規格.xlsx" 匯入至 Access 資料庫 ・建立 TC00 資料表 |
| Exsel建立 |
・將 DataGridView 資料匯出至 Excel 檔案 ・使用 EPPlus 函式庫 |
| Excel匯入 |
・將 Excel 檔案匯入至 Access 資料庫 ・使用 Access.Application 物件 |
5. 資料流程
5.1 處理流程圖
主處理流程:
- 表單載入 → 讀取初始資料
- 設定指定出貨日
- TC10: 箱裝單位出貨容積計算
- TC20: 散裝單位貨櫃容積計算
- TC30: 紙箱包裝數計算
- 容積計算與彙總
- 更新 DataGridView 顯示
- 儲存為 Excel (選用)
5.2 資料來源
| 資料來源 | 格式 | 用途 |
|---|---|---|
| T200資料表 | Access Database | 出貨資料(箱裝・散裝出貨資訊) |
| T210_指定出貨日 | Access Database | 出貨日資訊 |
| TC00_出貨貨櫃規格 | Access Database | 貨櫃規格主檔 |
| 出貨空間計算.xlsx | Excel | 紙箱・貨櫃規格 |
6. 資料庫處理
6.1 使用資料表
| 資料表名稱 | 說明 | 主要欄位 |
|---|---|---|
| T200 | 出貨基礎資料 | 出貨日, 出貨區分, 出貨地, C列, C容, B列, B容, G列, G容 |
| T210_指定出貨日 | 指定出貨日 | 出貨日, 全出貨天數 |
| TC00_出貨貨櫃規格 | 貨櫃規格 | 型號, 外寸W/D/H, 外寸容積/面積, 內寸W/D/H, 內寸容積 |
| TC10_箱裝單位出貨容積 | 箱裝出貨彙總 | 出貨日, 出貨區分, 出貨地數, C箱, C容 |
| TC20_散裝單位出貨貨櫃容積 | 貨櫃出貨彙總 | 出貨日, 出貨區分, 型號, 貨櫃數, 出貨貨櫃容積 |
| TC30_散裝單位全紙箱包裝數 | 紙箱包裝彙總 | 出貨日, 出貨區分, B箱, B容, 紙箱裝填率, 郵局小包~200尺寸 |
| TC40_散裝單位全出貨紙箱容積 | 紙箱容積中繼 | 建立 TC30 時所使用的中繼資料表 |
| TB10系列資料表 | 彙總資料表群 | 依出貨日與出貨區分彙總的箱裝/散裝/全量資料 |
6.2 SQL 處理
主要的 SQL 處理模式:
- CREATE VIEW - 建立查詢檢視(QC10*, QC20*, QC40*)
- SELECT ... INTO - 建立彙總資料表(TC10, TC20, TB10*)
- GROUP BY - 依出貨日、出貨區分、出貨地進行彙總
- LEFT JOIN - 與貨櫃規格進行關聯(Join)
- HAVING 子句 - 根據條件進行篩選
7. 計算邏輯
7.1 紙箱尺寸分配邏輯
紙箱裝填率: 0.9 (90%)
計算公式: DD = B容 ÷ 紙箱裝填率
計算公式: DD = B容 ÷ 紙箱裝填率
| 紙箱尺寸 | 容積(m³) | 分配條件 |
|---|---|---|
| 郵局小包 | 0.0018 | DD ≤ 0.0018 |
| 60尺寸 | 0.008 | 0.0018 < DD ≤ 0.008 |
| 80尺寸 | 0.0189 | 0.008 < DD ≤ 0.0189 |
| 100尺寸 | 0.037 | 0.0189 < DD ≤ 0.037 |
| 120尺寸 | 0.064 | 0.037 < DD ≤ 0.064 |
| 140尺寸 | 0.1016 | 0.064 < DD ≤ 0.1016 |
| 160尺寸 | 0.1517 | 0.1016 < DD ≤ 0.1517 |
| 180尺寸 | 0.216 | 0.1517 < DD ≤ 0.216 |
| 200尺寸 | 0.2963 | DD > 0.216 (複數個計算) |
7.2 貨櫃計算邏輯
貨櫃數計算公式:
貨櫃數 = Int(B容 ÷ (貨櫃內寸容積 × 貨櫃裝填率) + 0.5)
貨櫃容積計算公式:
出貨貨櫃容積 = 貨櫃數 × 貨櫃外寸容積
貨櫃數 = Int(B容 ÷ (貨櫃內寸容積 × 貨櫃裝填率) + 0.5)
貨櫃容積計算公式:
出貨貨櫃容積 = 貨櫃數 × 貨櫃外寸容積
| 貨櫃型號 | 外寸容積(m³) | 備註 |
|---|---|---|
| 31型 | 0.043 | 小型貨櫃 |
| 40型 | 0.049 | 中型貨櫃 |
| 51型 | 0.063 | 大型貨櫃 |
| 60型 | 0.077 | 特大型貨櫃 |
7.3 複數紙箱計算
超過 200 尺寸時的處理方式:
- AA = Int(DD ÷ 0.2963) → 200 尺寸紙箱個數
- BB = DD - AA × 0.2963 → 剩餘容積
- 針對剩餘容積 BB 分配適當的紙箱尺寸
8. Excel 連動
8.1 讀取檔案
| 檔案名稱 | 工作表名稱 | 用途 |
|---|---|---|
| 出貨空間計算.xlsx | 紙箱規格 | 紙箱尺寸主檔(9種類) |
| 出貨空間計算.xlsx | 出貨貨櫃規格 | 貨櫃型號主檔(4種類) |
| 出貨貨櫃規格.xlsx | 出貨貨櫃規格 | 用於資料庫匯入 |
8.2 輸出檔案
| 檔案名稱 | 工作表名稱 | 內容 |
|---|---|---|
| 空間計算.xlsx | 出貨包裝物量 |
・出貨包裝數量/容積 ・全出貨天數、指定出貨日 ・出貨包裝方式 ・貨櫃型號、裝填率、數量、容積 ・紙箱裝填率、數量 |
| TC30_散裝單位全紙箱包裝數.xlsx | Sheet1 | 紙箱包裝數的中繼資料 |
8.3 EPPlus 使用範例
' Excel 讀取
Dim fi As New IO.FileInfo(Dat儲存Path & "\SoftData\出貨空間計算.xlsx")
Using pkg As New ExcelPackage(fi)
Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets("紙箱規格")
For j = 1 To 10
For i = 2 To 10
MyDgv.Item(j - 1, i - 2).Value = sheet1.Cells(i, j).Value
Next
Next
End Using
' Excel 寫入
Dim MYFile As String = Dat儲存Path & "\SoftData\" & myExcel & ".xlsx"
Dim fi As IO.FileInfo = New IO.FileInfo(MYFile)
Using pkg As New ExcelPackage(fi)
Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets.Add("Sheet1")
For j = 0 To Maxj
For i = 0 To Maxi
sheet1.Cells(i + 2, j + 1).Value = MyDgv.Item(j, i).Value
Next
Next
pkg.Save()
End Using
9. 補充資訊
9.1 出貨區分
- 箱裝_出貨 - 以箱為單位的出貨
- 散裝_出貨貨櫃 - 使用貨櫃的散裝出貨
- 散裝_紙箱 - 使用紙箱包裝的散裝出貨
9.2 畫面項目
- 指定出貨日Tb - 欲計算的出貨日
- 全出貨天數Tb - 整體的出貨天數
- 散裝出貨_貨櫃選擇Cb - 貨櫃型號選擇下拉選單
- 出貨貨櫃裝填率Tb - 貨櫃裝填率(預設90%)
- 紙箱裝填率Tb - 紙箱裝填率(固定90%)
- 出貨資料區分Rb - 出貨資料區分選項按鈕
9.3 注意事項
- 紙箱裝填率固定設定為 0.9 (90%)
- 貨櫃裝填率可由使用者設定
- 處理流程會根據出貨區分而改變
- Excel 處理需要使用 EPPlus 函式庫
- 與 Access 連動需要 Access.Application 物件
- 具備版權與有效期限的顯示功能
10. 總結
本程式是為自動化複雜出貨包裝計算所設計的全面性解決方案。具備以下特色:
- 支援多樣化的包裝形態 - 箱裝、貨櫃、紙箱 3 種形態
- 精確的容積計算 - 考量裝填率進行的精密計算
- 最佳的包裝分配 - 依據容積選定適當尺寸
- 資料庫連動 - 透過 Access DB 進行資料管理
- Excel 連動 - 主檔讀取與結果輸出
- 視覺化的資料顯示 - 透過 DataGridView 進行易懂的顯示
目標使用者: 物流與出貨管理人員
預期用途: 每日出貨計畫、包裝耗材管理、空間最佳化
預期用途: 每日出貨計畫、包裝耗材管理、空間最佳化