1. Overview
This program is a Visual Basic form application for calculating and managing shipping packaging volumes. It uses the EPPlus library to integrate with Excel files and calculates the volume and quantity of various packaging formats (case shipping, container shipping, and cardboard packaging) based on shipping data.
File Name: T3_3_PackagingVolume.vb
Class Name: T3_3ShippingPackagingVolumeForm
Main Library: OfficeOpenXml (EPPlus)
Class Name: T3_3ShippingPackagingVolumeForm
Main Library: OfficeOpenXml (EPPlus)
2. Program Structure
2.1 Libraries Used
- OfficeOpenXml - Library for Excel operations
2.2 Main Components
| Component | Description |
|---|---|
| Form | T3_3ShippingPackagingVolumeForm |
| DataGridView | Multiple grid display controls |
| Database | Access Database (Tables: T200, TC10, TC20, TC30, etc.) |
| Excel | ShippingSpaceCalc.xlsx, ShippingContainerSpecs.xlsx |
3. Main Features
3.1 Shipping Packaging Calculation Function
- Case Unit Shipping Volume Calculation - Calculates shipping volume by case units
- Bulk Unit Container Volume Calculation - Calculates container-based shipping volumes
- Cardboard Packaging Count Calculation - Allocates packaging count by cardboard size
- Post-Packaging Volume Calculation - Aggregates total volume after packaging
3.2 Data Display Function
- Filtering by specified shipping date
- Volume conversion display for shipping data
- Container specification display
- Cardboard size chart display
- DataGridView display of aggregated data
3.3 Excel Integration Function
- Reading master data from Excel
- Outputting calculation results to Excel
- Loading cardboard and container specifications
4. Method Details
4.1 Initialization / Event Handlers
| Method Name | Description | Process Details |
|---|---|---|
| SpacePlan2AShippingPackagingVolume_Load | Form Load |
- File verification - Copyright and valid period display - Setup specified shipping date - Initialization of various data displays - Read container and cardboard sizes |
| ShippingPackagingVolumeCalcBt_Click_1 | Calc Button Click |
- Recalculate based on specified shipping date - Execute TC10~TC30 processing - Update DataGrid |
| SaveExcelAndCloseBt_Click | Excel Save & Close | Save calculation results to an Excel file and close form |
4.2 Main Calculation Methods
| Method Name | Input | Process Details | Output |
|---|---|---|---|
| TC10_CaseUnitShippingVolume | Specified Shipping Date |
- Extract case shipping data from T200 table - Aggregate by shipping destination - Calculate total volume |
TC10_CaseUnitShippingVolume Table DataGridView Display |
| TC20_BulkUnitShippingContainerVolume | Specified Shipping Date Container Type Fill Rate |
- Extract bulk shipping data - Compare with container specs - Calculate required container count - Calculate container volume |
TC20_BulkUnitShippingContainerVolume Table DataGridView Display |
| TC30_BulkUnitTotalCardboardPackagingCount | Specified Shipping Date |
- Allocate bulk shipping volume to cardboard boxes - Calculate quantities by size - Select optimal size considering fill rate - Handle multiple cardboards |
TC30_BulkUnitTotalCardboardPackagingCount Table DataGridView Display |
| MultipleCardboardCalc | Volume(DD) Row No(i) |
- Calculate number of size 200 boxes - Allocate remaining volume to appropriate size |
Update DataGridView |
4.3 Data Display Methods
| Method Name | Process Details |
|---|---|
| ShippingDataVolumeConversionDgvDisplay |
- Aggregate display for case and bulk shipping - Display packaging quantities and volume - 3-column x 5-row grid configuration |
| PostShippingPackagingVolumeDgvDisplay |
- Final volume display after packaging - Container count and area calculation - Aggregated display of cardboard counts |
| BulkShippingUnit_CardboardAggregation |
- Aggregation by cardboard size - Horizontal totals and volume display - Volume calc by size (Yu-Packet ~ 200 size) |
| PostShippingPackagingContainerCalc |
- Aggregation by container type - Container outer volume calculation - Branching logic based on shipping data category |
4.4 Excel Processing Methods
| Method Name | Process Details |
|---|---|
| ShippingContainerSpecsDgvDisplay |
- Load "ShippingContainerSpecs" sheet from "ShippingSpaceCalc.xlsx" - Display specs for types 31, 40, 51, and 60 |
| CardboardSizeChartDgvDisplay |
- Load "CardboardSpecs" sheet from "ShippingSpaceCalc.xlsx" - Display specs from Yu-Packet up to 200 size |
| TC00_ShippingContainerSpecsImport |
- Import "ShippingContainerSpecs.xlsx" to Access Database - Create TC00 table |
| ExcelCreate |
- Output DataGridView data to Excel file - Uses EPPlus library |
| ExcelImport |
- Import Excel file to Access Database - Uses Access.Application object |
5. Data Flow
5.1 Processing Flowchart
Main Processing Flow:
- Form Load → Load initial data
- Set specified shipping date
- TC10: Calculate Case Unit Shipping Volume
- TC20: Calculate Bulk Unit Container Volume
- TC30: Calculate Cardboard Packaging Count
- Volume Calculation and Aggregation
- Update DataGridView Display
- Save to Excel (Optional)
5.2 Data Sources
| Data Source | Format | Usage |
|---|---|---|
| T200 Table | Access Database | Shipping Data (Case/Bulk Info) |
| T210_SpecifiedShippingDate | Access Database | Shipping Date Info |
| TC00_ShippingContainerSpecs | Access Database | Container Spec Master |
| ShippingSpaceCalc.xlsx | Excel | Cardboard / Container Specs |
6. Database Processing
6.1 Tables Used
| Table Name | Description | Main Fields |
|---|---|---|
| T200 | Basic Shipping Data | ShippingDate, ShippingCategory, Destination, C_Rows, C_Vol, B_Rows, B_Vol, G_Rows, G_Vol |
| T210_SpecifiedShippingDate | Specified Shipping Date | ShippingDate, TotalShippingDays |
| TC00_ShippingContainerSpecs | Container Specs | Type, Outer_W/D/H, Outer_Vol/Area, Inner_W/D/H, Inner_Vol |
| TC10_CaseUnitShippingVolume | Case Shipping Aggregation | ShippingDate, ShippingCategory, DestCount, C_Cases, C_Vol |
| TC20_BulkUnitShippingContainerVol | Container Shipping Aggregation | ShippingDate, ShippingCategory, Type, ContainerCount, ContainerVol |
| TC30_BulkUnitTotalCardboardCount | Cardboard Pack Aggregation | ShippingDate, ShippingCategory, B_Cases, B_Vol, CardboardFillRate, YuPacket~200Size |
| TC40_BulkUnitTotalShippingCardboardVol | Cardboard Volume Intermediate | Intermediate table used during TC30 creation |
| TB10 Series Tables | Aggregation Table Group | Case/Bulk/Total aggregated by ShippingDate & Category |
6.2 SQL Processing
Main SQL Processing Patterns:
- CREATE VIEW - Creation of query views (QC10*, QC20*, QC40*)
- SELECT ... INTO - Creation of aggregation tables (TC10, TC20, TB10*)
- GROUP BY - Aggregation by date, category, and destination
- LEFT JOIN - Joining with container specifications
- HAVING Clause - Filtering by conditions
7. Calculation Logic
7.1 Cardboard Size Allocation Logic
Cardboard Fill Rate: 0.9 (90%)
Calculation Formula: DD = B_Vol ÷ Cardboard Fill Rate
Calculation Formula: DD = B_Vol ÷ Cardboard Fill Rate
| Cardboard Size | Volume (m³) | Allocation Condition |
|---|---|---|
| Yu-Packet | 0.0018 | DD ≤ 0.0018 |
| Size 60 | 0.008 | 0.0018 < DD ≤ 0.008 |
| Size 80 | 0.0189 | 0.008 < DD ≤ 0.0189 |
| Size 100 | 0.037 | 0.0189 < DD ≤ 0.037 |
| Size 120 | 0.064 | 0.037 < DD ≤ 0.064 |
| Size 140 | 0.1016 | 0.064 < DD ≤ 0.1016 |
| Size 160 | 0.1517 | 0.1016 < DD ≤ 0.1517 |
| Size 180 | 0.216 | 0.1517 < DD ≤ 0.216 |
| Size 200 | 0.2963 | DD > 0.216 (Multiple calculation) |
7.2 Container Calculation Logic
Container Count Formula:
Container Count = Int(B_Vol ÷ (Container Inner Vol × Container Fill Rate) + 0.5)
Container Volume Formula:
Shipping Container Volume = Container Count × Container Outer Volume
Container Count = Int(B_Vol ÷ (Container Inner Vol × Container Fill Rate) + 0.5)
Container Volume Formula:
Shipping Container Volume = Container Count × Container Outer Volume
| Container Type | Outer Volume (m³) | Remarks |
|---|---|---|
| Type 31 | 0.043 | Small Container |
| Type 40 | 0.049 | Medium Container |
| Type 51 | 0.063 | Large Container |
| Type 60 | 0.077 | Extra Large Container |
7.3 Multiple Cardboard Calculation
Handling for volumes exceeding Size 200:
- AA = Int(DD ÷ 0.2963) → Number of Size 200 boxes
- BB = DD - AA × 0.2963 → Remaining volume
- Allocate appropriate cardboard size to the remaining volume (BB)
8. Excel Integration
8.1 Input Files
| File Name | Sheet Name | Usage |
|---|---|---|
| ShippingSpaceCalc.xlsx | Cardboard Specs | Cardboard Size Master (9 types) |
| ShippingSpaceCalc.xlsx | Shipping Container Specs | Container Type Master (4 types) |
| ShippingContainerSpecs.xlsx | Shipping Container Specs | For Database Import |
8.2 Output Files
| File Name | Sheet Name | Contents |
|---|---|---|
| SpaceCalc.xlsx | Shipping Packaging Volume |
- Shipping Packaging Quantity/Volume - Total Shipping Days, Specified Date - Packaging Method - Container Type, Fill Rate, Count, Vol - Cardboard Fill Rate, Count |
| TC30_BulkUnitTotalCardboardCount.xlsx | Sheet1 | Intermediate data for Cardboard Count |
8.3 EPPlus Usage Example
' Excel Read
Dim fi As New IO.FileInfo(DatSavePath & "\SoftData\ShippingSpaceCalc.xlsx")
Using pkg As New ExcelPackage(fi)
Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets("Cardboard Specs")
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 Write
Dim MYFile As String = DatSavePath & "\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. Supplementary Information
9.1 Shipping Categories
- Case_Shipping - Shipping by case units
- Bulk_ShippingContainer - Bulk shipping via containers
- Bulk_Cardboard - Bulk shipping via cardboard packaging
9.2 Screen Items
- Specified Shipping Date Tb - Target date for calculation
- Total Shipping Days Tb - Overall shipping days
- Bulk Shipping_Container Select Cb - Dropdown for container type
- Shipping Container Fill Rate Tb - Container fill rate (Default 90%)
- Cardboard Fill Rate Tb - Cardboard fill rate (Fixed 90%)
- Shipping Data Category Rb - Radio button for data category
9.3 Important Notes
- Cardboard fill rate is fixed at 0.9 (90%)
- Container fill rate can be set by the user
- Processing flow changes based on shipping category
- EPPlus library is required for Excel operations
- Access.Application object is required for Access integration
- Copyright and validity period display features included
10. Summary
This program is a comprehensive solution designed to automate complex shipping packaging calculations. It features:
- Support for Multiple Packaging Types - 3 forms: cases, containers, and cardboards
- Accurate Volume Calculations - Precise calculations considering fill rates
- Optimal Packaging Allocation - Appropriate size selection based on volume
- Database Integration - Data management via Access DB
- Excel Integration - Master reading and results output
- Visual Data Display - Easy-to-understand displays using DataGridView
Target Users: Logistics and Shipping Managers
Intended Usage: Daily shipping planning, packaging material management, space optimization
Intended Usage: Daily shipping planning, packaging material management, space optimization