🧠 核心算法详解
一、模板引擎与文件创建
组件在编译时内置了一个名为 Resources.ZMB 的资源文件,这是一个预先设计好格式的Excel模板。其行为如下:
新建文件:
当目标文件不存在时:
1 从内存中加载 ZMB 模板到 MemoryStream
2 用模板流创建 ExcelPackage(此时包中包含工作表和预设格式)
3 写入数据到"装配明细表"工作表
4 调用 package.SaveAs(fi) 将内存中的包保存到目标路径
追加写入已存在文件:
当目标文件已存在时:
1 直接通过 new ExcelPackage(fi) 加载现有文件
2 在"装配明细表"工作表中写入数据
3 调用 package.Save() 覆盖保存
二、数据写入引擎
WriteDataToSheet 方法将平面字符串列表写入Excel工作表的指定区域:
输入格式:每行字符串以逗号分隔各列值。例如:
"A01,1200,铝合金,2.5,8×M6"
表示一行5列的数据。
写入流程:
1 统计总行数 = data.Count
2 统计最大列数 = 所有行中逗号分隔后最多段的数量
3 构建二维 object 数组 [rowCount, colCount]
4 逐行解析:对每个单元格调用 ConvertToTypedValue
• 尝试 int.TryParse → 转换为整数
• 尝试 double.TryParse → 转换为浮点数
• 都不成功 → 保留原字符串
5 批量写入到从 (rowStart=2, colStart=1) 即 A2 单元格开始的目标范围
批量写入的意义:使用二维数组批量赋值(而非逐单元格写入),大幅提升了写入性能,尤其适合数百行数据的大文件。
三、路径与分支的对应关系
组件接受树形数据输入(GH_ParamAccess.tree),路径参数为列表(自动展平 Flatten)。
对应规则:
路径列表索引 0 → 树形数据分支 0 → 写入 路径[0] 文件
路径列表索引 1 → 树形数据分支 1 → 写入 路径[1] 文件
...以此类推
数量校验(关键):路径数量必须等于树形分支数量。不匹配时立即报错并终止,避免数据错位。