组件内置了一套完整的Excel解析引擎(ReadFromExcel 方法),处理流程如下:
Step 1 —— 文件流打开
使用
FileStream 以只读+共享模式打开文件,确保:
- 文件在操作期间不会被其他进程锁定
- 其他程序(如Excel)可以正常访问该文件
Step 2 —— 工作表定位
通过
GetWorksheet 方法定位工作表:
先按工作表名称查找(不区分大小写)
如果名称查找失败,再按索引查找
如果均失败,默认使用第一个工作表
Step 3 —— 数据区域检测
GetExactDataRange 方法自动计算有效数据范围:
起始行:固定为第7行
终止行:从第300行开始从下往上搜索第2列非空行
列范围:固定第1列到第14列(A~N)
Step 4 —— 分区读取
读取以下几个数据区域:
全数据区(第7行~终止行,第1~14列)→ 每行拼接为逗号分隔字符串
序号区(第7行~终止行,第1列)→ 校验序号是否连续递增
名称区(第7行~终止行,第2列)→ 用于输出建模项目的名称
是否建模区(第7行~终止行,第15列)→ 判断 0=不建模,非0=建模
Step 5 —— 数据校验
检查四个读取区域的行数是否一致,不一致则报错"表格项没有一一对应"
检查序号列是否从1开始的连续自然数,否则报错"表格序号列存在错误"
Step 6 —— 数据分流
遍历每一行:
如果第15列 == "0" → 整行数据归入"其他信息"(不建模)
如果第15列 ≠ "0" → 第2列值归入"名称",第1-4列值归入"信息列表"(建模)