Granta MI 实施项目里有一条经验值得先说:服务器上线只是起点,数据真正可用才是终点。很多时候,系统部署几周就能完成,但数据录入会拖上一两个月——瓶颈往往不是数据库性能,而是“工程师手里的 Excel 数据,怎么变成 Granta MI 里的结构化记录”。
材料工程师长期用 Excel 管理工作表:牌号、成分、热处理、力学性能、报告结果,格式自由、各写各的。Granta MI 则是一套严格的数据模型,每条记录属于什么类型、每个属性存什么值、哪些字段必填、哪些字段只能选枚举,都是预先定义好的。让工程师直接对着数据库界面录入,既不符合习惯,也容易填错;让管理员代替每个人录入,又会成为团队瓶颈。
Excel 导入模板恰好是两者之间的桥梁:工程师继续用熟悉的 Excel 填写数据,但填写范围、格式、取值都受模板约束;导入时 Granta MI 根据管理员预先配置的映射,把 Excel 里的行列数据翻译成数据库中的记录与属性。模板配得好,录入效率和数据质量兼得;模板配得随意,数据入口就会变成垃圾入口。
本文是 Granta MI Enterprise 数据管理系列的第 4 部分,聚焦两件事:如何配置 Excel 导入模板,以及如何使用模板添加一条记录。无论你是 Granta MI 的运维管理员,还是正在整理历史材料数据的数据管理员,这篇内容都可以直接当操作手册参考。
1. 这篇文章真正要解决的问题
Granta MI(Ansys Granta MI)是面向工程材料的信息管理平台,适合制造企业把分散在个人电脑、Excel、PDF 检测报告中的材料数据统一管理起来。它的核心价值不只是“能存数据”,而是让材料数据在统一的记录类型、属性定义和权限体系下被规范检索、分析和复用。
但正因为规范,Granta MI 对数据录入提出了比 Excel 高得多的要求:
- 数据要有明确归属:一条记录属于哪个表、挂在哪个父记录下。
- 属性要有明确类型:数值型属性不能填文字,日期型属性必须是标准格式。
- 枚举型属性只能取规定值:例如“热处理状态”只能输入系统中存在的枚举项。
- 必填属性不能为空:缺失关键数据会直接阻断导入。
这些规则在数据库层面是正确的,但对不熟悉数据模型的工程师来说,却是一道道门槛。Excel 导入模板的作用,就是把这套规则“前置”到模板里:用户在 Excel 中看到的列名、批注、下拉选项,已经决定了数据的边界和格式。
这篇文章要解决三个具体问题:
一是把 Granta MI 中与 Excel 导入相关的核心概念讲清楚,让不熟悉数据模型的管理员也能理解映射逻辑。
二是给出配置 Excel 导入模板的完整流程,包括字段映射表设计、模板文件结构、校验规则配置和发布验证。
三是通过“添加单条记录”的最小示例,让管理员先跑通一条链路:模板配置 → 数据填写 → 提交导入 → 验证入库。
如果你是第一次给 Granta MI 配置数据入口,建议先照着第 6 部分的最小示例跑一遍,再扩展到批量导入场景。
2. Granta MI 数据模型基础:记录、属性与映射逻辑
配置 Excel 导入模板,本质上是在做一件事:把 Excel 表格的“列”翻译成 Granta MI 的“属性”,把 Excel 表格的“行”翻译成 Granta MI 的“记录”。如果对这两个核心概念没有清晰认识,后面配置映射时很容易出错。
2.1 记录(Record)与记录类型(Record Type)
在 Granta MI 中,每条材料数据都是一个记录(Record)。一条记录可以代表一种材料牌号、一个供应商批次、一份测试报告,或者一个试验曲线。
记录不是孤立存在的。Granta MI 的数据模型是一棵层级树:
- 最高层通常是记录类型,例如“金属材料”“聚合物”“复合材料”。
- 往下是具体的材料大类,例如“铝合金”“钢”“钛合金”。
- 再往下是具体牌号,例如“Al6061-T6”。
- 再往下还可以挂测试数据、认证文件、工艺记录等子记录。
这就是 Granta MI 中非常关键的父子层级(Hierarchy)。配置 Excel 导入模板时,必须明确“新增记录会挂到哪个父记录下”。如果父记录定位错误,数据虽然进了系统,但会出现在错误的目录分支里,后面维护成本很高。
2.2 属性(Attribute)与属性类型
一条记录拥有的字段叫属性(Attribute)。Granta MI 的属性类型比 Excel 单元格类型更严格,常见的类型包括:
| 属性类型 | 说明 | Excel 中常见表示 |
|---|---|---|
| Text | 短文本,例如材料牌号 | 文本 |
| Long Text | 长文本,例如工艺描述 | 多行文本 |
| Integer | 整数 | 数字 |
| Float | 浮点数,例如密度、强度 | 数字 |
| Discrete | 枚举,只能取规定值 | 下拉列表 |
| Date | 日期 | 日期 |
| Link | 链接到其他记录 | 记录名称或引用 |
| Tabular | 子表格,例如多组试验数据 | 多个行区域 |
理解属性类型对配置模板至关重要。因为 Granta MI 在导入验证时,会按照属性类型检查 Excel 中的值:
- Float 属性如果读到“2,70”这种带逗号的文本,会报类型不匹配。
- Discrete 属性如果填了系统中不存在的枚举值,即使“看起来很像”,也会被拒绝。
- Date 属性如果 Excel 显示为“2024/1/1”,实际单元格是文本,同样会失败。
2.3 数据模式(Data Schema)与映射
Granta MI 中所有记录类型、属性、层级结构、单位制的定义,统称为数据模式(Data Schema)。数据模式通常由数据管理员在项目初期设计完成,它是 Excel 导入模板配置的“真实来源”。
配置 Excel 导入模板的过程,本质上就是建立一份“映射关系”:
- Excel 中的某个工作簿、某个工作表,对应 Granta MI 中的哪个表。
- Excel 中的每一列,对应哪个属性。
- Excel 中每个单元格的值,按照什么规则转换为属性值。
- 如果新增记录有父子层级,父记录如何定位。
这听起来简单,实际配置中容易出问题的恰恰是细节:列头命名不规范、单位没有统一、枚举值大小写不一致、父记录定位规则错误。下一节开始,我会先用对比视角说明为什么 Excel 导入模板是最值得投入的录入方式,再进入具体配置。
3. Granta MI 数据录入方式对比:为什么 Excel 导入模板最常用
Granta MI 提供了多种数据录入方式,不同方式有不同的适用场景。管理员需要先判断:当前团队的录入场景到底是什么。
| 录入方式 | 典型工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 手工录入 | MI Desktop 记录树 | 灵活,随时可改 | 需要安装客户端,普通用户上手成本高 | 管理员日常维护 |
| Excel 导入模板 | Excel + 模板映射 | 工程师熟悉,格式可控,一次配置多次使用 | 需要管理员先配置模板 | 日常批量新增和更新 |
| 网页端表单 | MI Enterprise Web | 无需安装,浏览器可用 | 表单字段展示需要配置,录入大段数据效率偏低 | 分散用户自助录入 |
| Python Scripting Toolkit | Python 脚本 | 可自动化、可批量,适合复杂映射 | 需要编程能力,入门门槛高 | 历史数据迁移、系统集成 |
从生产实践看,Excel 导入模板是使用频率最高的一种方式,原因有三:
第一,材料工程师几乎每天都在用 Excel,工具本身没有学习成本。管理员要做的是让模板贴近 Granta MI 的数据规则,而不是让工程师去学新工具。
第二,模板可以承载“批注和示例”。告诉用户这一列填什么、单位是什么、枚举有哪些,可以大大减少录入错误。
第三,模板可以作为团队数据提交的标准格式,规范从源头开始,而不是等数据进入 Granta MI 之后再纠错。
需要强调的是,Excel 导入模板不等于“在 Excel 里打开一个普通表格随便填”。它背后有一套映射配置,管理员配置完成后,用户拿到的模板才能被 Granta MI 正确识别。下面进入前置条件部分。
4. 配置 Excel 导入模板的前置条件与准备清单
在开始配置之前,先确认以下前置条件是否满足。跳过这些检查直接配置,很容易在导入阶段反复返工。
4.1 权限要求
配置 Excel 导入模板通常需要数据管理员(Data Administrator)权限,或者在 Granta MI 中被授予了“编辑数据模式”和“导入数据”权限的账号。
实际项目中,我建议遵循最小权限原则:
- 模板配置、数据模式修改只开放给管理员。
- 普通用户只拥有“使用模板导入数据”的权限,不能直接修改映射关系。
- 生产环境修改模板前,先在测试环境验证。
4.2 数据模式已经定义完成
这是最容易被忽略的条件。如果目标记录类型还没建好,或者属性还没定义完整,就不要急着做导入模板。否则模板配到一半,发现缺一个属性,又得回到数据模式里去补,整个流程会变得混乱。
比较稳妥的做法是:
- 列出目标记录类型及层级。
- 列出所有需要导入的属性,标注属性类型、单位、是否必填。
- 与 Granta MI 中的实际数据模式逐项比对。
4.3 字段映射表
字段映射表是配置模板的核心文档。它描述的是“Excel 列 → Granta MI 属性”的对应关系。这里给一个可以直接复用的示例结构:
# 字段映射表示例:金属材料 Al 系列导入 record_type: "Metals" sheet_name: "Sheet1" header_row: 1 mappings: - excel_column: "材料牌号" attribute: "Designation" attribute_type: "Text" required: true - excel_column: "材料类别" attribute: "Material Class" attribute_type: "Discrete" allowed_values: ["铝合金", "钢", "钛合金", "镍基合金"] required: true - excel_column: "密度(g/cm3)" attribute: "Density" attribute_type: "Float" unit: "g/cm3" required: true - excel_column: "弹性模量(GPa)" attribute: "Modulus of Elasticity" attribute_type: "Float" unit: "GPa" required: false - excel_column: "屈服强度(MPa)" attribute: "Yield Strength" attribute_type: "Float" unit: "MPa" required: false - excel_column: "热处理状态" attribute: "Heat Treatment" attribute_type: "Discrete" allowed_values: ["O", "T4", "T6", "T651"] required: false注意:上面是一个映射示意,用于帮助理解配置项的逻辑,实际配置通常在 Granta MI 的图形界面中完成。但它体现的三个原则是通用的:
- 每条映射必须明确属性类型。
- 枚举型属性必须给出允许值清单。
- 必填属性必须在导入前校验。
4.4 样例数据
准备 5 到 10 行真正有代表性的样例数据,覆盖:
- 完整填写的行。
- 可选属性留空的行。
- 包含枚举值的行。
- 包含数值和单位的行。
样例数据是模板验证的“测试用例”。没有样例数据就发布模板,等于没有做测试就上线。
5. 核心流程:配置 Excel 导入模板
前置条件确认后,就可以开始配置。这里我按照“字段梳理 → 模板设计 → 映射配置 → 发布验证”四个阶段讲,每个阶段都可以独立检查。
5.1 阶段一:梳理字段映射
先打开 Granta MI 的数据模式,确认目标记录类型中所有需要导入的属性。然后对照字段映射表逐项核对,重点关注三件事:
- 属性名是否与数据模式中的名称完全一致。
- 属性类型是否与 Excel 列的数据类型匹配。
- 枚举属性的允许值是否完整列出。
这一步看似基础,却最容易出错。很多导入失败都是因为属性名拼写差异,比如数据模式中属性叫“Density”,映射表里写了“density”或“密度”,系统匹配不上,只能报错。
5.2 阶段二:设计 Excel 模板文件
模板文件的设计直接影响工程师的使用体验。一份好的模板应满足:
- 第一行是列标题,与字段映射表中的 excel_column 一一对应。
- 对关键列增加批注,说明填写格式、示例和单位。
- 对枚举列使用 Excel 数据验证下拉列表,减少手工输入。
- 对必填列设置条件格式,空值高亮提醒。
- 锁定表头区域,避免用户误删或修改列名。
下面是一个模板文件的 CSV 示意,第一行是列名,后面是样例数据:
材料牌号,材料类别,密度(g/cm3),弹性模量(GPa),屈服强度(MPa),热处理状态 Al6061-T6,铝合金,2.70,68.9,276,T6 Al7075-T6,铝合金,2.81,71.7,503,T6 Ti-6Al-4V,钛合金,4.43,113.8,880,Annealed在 Granta MI 的配置逻辑中,列名通常需要与映射配置保持一致,因此模板文件确定后,一般不再随意调整列顺序和列名。如果后续需要增加字段,应该在测试环境重新建立模板并验证。
5.3 阶段三:在 Granta MI 中配置导入映射
以管理员账号登录 Granta MI 后,在数据管理或导入相关功能中,新建一个 Excel 导入映射。配置过程中需要选择或填写以下几项:
| 配置项 | 说明 | 注意事项 |
|---|---|---|
| 数据表(Table) | 新增记录要写入的记录类型 | 与字段映射表保持一致 |
| 工作表名称 | Excel 中用于导入的 sheet | 模板发布后不要随意修改 sheet 名 |
| 标题行 | 列头所在行号 | 通常为第 1 行 |
| 列映射 | 将 Excel 列逐一关联到 Granta MI 属性 | 属性名必须精确匹配 |
| 父记录定位 | 新记录挂在哪个父记录下 | 可以指定固定父记录或按列查找 |
| 默认值 | 某些属性在没有值时使用的默认值 | 谨慎使用,避免污染数据 |
| 单位转换 | 从 Excel 单位转为系统单位 | 例如 Excel 中 g/cm3 转 kg/m3 |
这里的核心是“父记录定位”。在 Granta MI 的层级模型中,新增一条“Al6061-T6”记录,通常需要先定位到它的父节点“铝合金”。配置时可以选择“按列值查找父记录”,让模板中的“材料类别”列来定位;也可以固定一个父记录,适用于只有单一父级的情况。
配置完成后保存映射,并给它一个语义明确的名字,例如“Metals_Excel_Import_AlSeries_v1”。后续发布和排错时,名字本身就是重要的信息。
5.4 阶段四:发布模板并验证
把配置好的模板文件与映射关联后,先在测试环境跑一遍样例数据:
- 在测试库中用样例 Excel 文件执行导入。
- 观察验证阶段是否报错。
- 进入系统检查每条记录的位置、属性值、单位是否正确。
- 确认无误后,再在正式环境发布模板。
这里要特别强调:生产环境的数据导入操作有风险。任何模板上线前,都应该在测试环境完整验证一遍,并保留验证记录。如果生产环境导入失败,不要直接反复重试,先回到测试环境复现问题。
6. 实操:使用 Excel 模板添加单条记录
模板配置完成后,最典型的操作是:用模板添加一条新记录。下面用一个实际场景演示。
6.1 场景定义
假设 Granta MI 中已经存在“金属材料 → 铝合金”分支。现在要添加一条新材料记录:
- 材料牌号:Al6061-T6
- 材料类别:铝合金
- 密度:2.70 g/cm³
- 弹性模量:68.9 GPa
- 屈服强度:276 MPa
- 热处理状态:T6
6.2 在模板中填写数据
在 Excel 模板中新增一行,填入以下内容:
| 材料牌号 | 材料类别 | 密度(g/cm3) | 弹性模量(GPa) | 屈服强度(MPa) | 热处理状态 |
|---|---|---|---|---|---|
| Al6061-T6 | 铝合金 | 2.70 | 68.9 | 276 | T6 |
填写时注意几个细节:
- “材料牌号”是 Text 属性,直接填文本。不要带空格,不要用全角字符。
- “材料类别”是 Discrete 属性,优先通过 Excel 下拉列表选择,避免手工输入导致枚举值不匹配。
- 多个数值列请保持 Excel 单元格为“数值”格式。如果单元格左上角出现绿色三角提示,说明它是文本存储的数字,导入时可能报类型错误。
- “热处理状态”T6 必须与系统中枚举值完全一致,包括大小写。
6.3 提交导入
将填写好的 Excel 文件通过 Granta MI 配置的导入功能提交。提交后,系统会按照映射配置进行验证:
- 必填属性是否为空。
- 数据类型是否匹配。
- 枚举值是否合法。
- 父记录定位是否成功。
如果全部通过,系统会创建一条名为“Al6061-T6”的记录,并把密度、弹性模量、屈服强度、热处理状态等属性写入对应字段,层级上挂在“铝合金”父记录下。
6.4 补充:通过 Python Scripting Toolkit 添加单条记录
有些管理员会问:能不能不用 Excel,直接用脚本添加?可以。Granta MI 官方提供了 Scripting Toolkit for Python,适合在迁移和自动化场景中使用。下面是一个最小示例,API 细节请以你安装的官方版本为准:
# 文件路径:add_single_record.py # 说明:使用 Granta MI Scripting Toolkit 添加单条记录(示例) from GRANTA_MIScriptingToolkit import granta as mpy # 1. 连接 MI 服务器 mi = mpy.Mi("http://mi-server.example.com") # 2. 选择数据库和数据表 db = mi.get_db("MaterialsDB") table = db.get_table("Metals") # 3. 创建记录 record = table.create_record("Al6061-T6") # 4. 设置属性值 record.set_attributes({ "Density": 2.70, "Modulus of Elasticity": 68.9, "Yield Strength": 276, "Heat Treatment": "T6" }) # 5. 写入服务器 mi.update([record]) print("记录已创建:Al6061-T6")脚本方式更适合“需要自动创建大量记录”的场景。如果只是日常添加一条数据,用配置好的 Excel 模板更快。两种方式都值得掌握,因为它们对应的数据结构完全一致——记录、属性、层级,只是入口不同。
7. 运行验证:如何确认记录正确进入 Granta MI
数据导入完成只是第一步,关键要验证“记录确实进入了正确的位置”。
7.1 在界面中验证
在 MI Desktop 或 MI Enterprise Web 中,导航到“金属材料 → 铝合金”分支,找到刚刚创建的“Al6061-T6”记录,然后核对:
- 记录名称是否正确,是否出现在正确的父级下。
- 属性面板中的数值是否正确,单位是否显示为系统单位。
- 枚举属性“热处理状态”是否显示为 T6 而不是被截断或转换。
- 必填属性是否都有值,没有空值或“-”占位。
如果记录位置不对,可以拆解检查:父记录定位配置是否写错了关键词;材料类别列中的值与父记录名称是否完全一致。
7.2 通过脚本验证
也可以用 Scripting Toolkit 查询记录,确认数据库中的实际状态:
# 文件路径:query_record.py # 说明:查询指定记录并打印其属性(示例) from GRANTA_MIScriptingToolkit import granta as mpy mi = mpy.Mi("http://mi-server.example.com") db = mi.get_db("MaterialsDB") table = db.get_table("Metals") records = table.search_for_records_where({"Designation": "Al6061-T6"}) for r in records: print("记录名称:", r.name) print("记录 GUID:", r.record_guid) for attr_defn, value in r.attributes(): print(attr_defn.name, "=", value)查询结果中,如果能看到 Density、Yield Strength 等属性都带上了正确数值,说明这次导入是成功的。
7.3 日志与审计
正式环境中,建议关注 Granta MI 的日志与审计功能。一次成功的数据导入应该产生对应的审计记录,记录创建时间、创建人和导入方式。如果发现某条记录来源不明,或者审计日志缺失,说明导入流程或者权限配置可能存在漏洞,需要及时排查。
8. 常见问题与排查方法
配置和使用 Excel 导入模板的过程中,以下问题出现频率最高。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 导入时报“属性类型不匹配” | Excel 单元格是文本格式,Granta MI 属性是 Float 或 Integer | 检查单元格格式,查看是否有绿色三角提示 | 将文本型数字批量转成数值格式后再导入 |
| 枚举值被拒绝 | 枚举值大小写、空格或全角字符不一致 | 打开 Granta MI 数据模式,核对允许值列表 | 在 Excel 中使用数据验证下拉列表,或在检查枚举值的完整说明 |
| 导入后记录位置不对 | 父记录定位规则配置错误,或定位列的值与父记录名称不一致 | 回到映射配置查看父记录定位列 | 统一父记录命名规则,或在导入前先用“按名称查找”验证定位列 |
| 必填属性为空导致中断 | Excel 中必修列存在空单元格 | 在 Excel 中排序筛选空值 | 增加条件格式高亮空值;导入前检查必填项完整性 |
| 日期列导入后显示异常 | Excel 日期是文本,或格式与系统不一致 | 对比系统日期格式要求 | 在 Excel 中将日期列统一为标准日期格式 |
| 单位没有自动转换 | 映射配置中单位转换未设置 | 检查导入映射的单位配置 | 配置好目标单位,确认 Excel 单位到系统单位的转换关系 |
| 用户打不开模板或提示文件损坏 | 模板文件被手工修改过,或 Excel 版本不兼容 | 查看报错日志 | 从服务器重新下载模板,不要直接在共享目录里编辑模板源文件 |
| 没有权限导入 | 用户角色没有“导入”权限,或模板未对该用户组发布 | 查看用户权限配置和模板发布范围 | 在管理端为用户组授权,或检查模板发布范围 |
如果一个问题反复出现,不要急着改模板,先记录完整的复现步骤和错误信息。很多问题是因为字段映射表与数据模式不同步导致的,比如数据模式中某个枚举值更新了,但 Excel 模板里的下拉列表还是旧值。这时候删掉模板重新配置,往往比在旧模板上打补丁更干净。
9. 最佳实践与工程建议
9.1 模板是资产,要有负责人和版本
不要把 Excel 导入模板当作一个临时文件。它是团队数据入口的“线上系统”,应该有明确的负责人、版本号和变更记录。建议给模板文件名加上版本,例如:
Metals_Alloy_Import_Template_v1.1.xlsx每次修改映射或模板结构,都更新版本号并记录变更原因。生产环境使用旧版本模板导入的数据,要能追溯到当时使用的版本。
9.2 维护一份字段映射文档
字段映射表不是配置完成就可以扔掉的资料。建议把映射表放到团队共享文档中,并保持与 Granta MI 数据模式同步。当数据模式发生变更时,第一件事不是改模板,而是更新映射文档。这个文档也是新管理员接手时最重要的入门材料。
9.3 把校验前置到 Excel 侧
Granta MI 会在导入时做数据校验,但更高效的做法是在 Excel 侧就把错误挡住:
- 枚举列使用数据验证下拉列表。
- 数列限制只能输入数字。
- 必填列设置为不可为空。
- 关键列增加批注,写明示例和单位。
这样用户在提交之前就完成了自我检查,Granta MI 端的校验通过率会显著提高。
9.4 测试环境是底线
涉及生产环境的数据导入操作,都应该先在测试环境做一次“预演”。尤其是以下几种情况:
- 首次配置模板。
- 数据模式发生变更。
- 批量导入大量历史数据。
- 更新已有记录而不是新增记录。
预演的目的不只是验证映射,还要确认导入前后数据的一致性。测试环境验证通过后,再以受控方式在生产环境执行。
9.5 权限与审计
Excel 导入模板涉及数据写入,权限控制要明确:
- 模板的映射配置、发布、修改只能由管理员操作。
- 普通用户的导入权限按岗位职责授予,遵循最小权限原则。
- 关键业务数据表可以关闭普通用户的“修改属性”权限,只允许通过模板新增记录。
同时,开启 Granta MI 的审计功能。数据管理团队应能回答:谁、在什么时间、通过哪个模板、创建或修改了哪条记录。这不仅是合规要求,也是数据质量问题追查的基础。
9.6 模板生命周期管理
模板也有生命周期。数据模式调整、业务规则变化、单位制切换,都会影响模板的有效性。建议定期做三件事:
- 每季度复查一次模板,与数据模式比对。
- 关注用户的反馈,比如“这个下拉列表少了一个值”“这个列名看不懂”。
- 模板作废时,从共享目录和 Granta MI 中一并清理,避免用户误用旧模板。
Excel