You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Brightway ExcelImporter将多份Excel文件导入同一数据库?

如何用Brightway的ExcelImporter将多个Excel工作簿导入同一新数据库

你说得没错,ExcelImporter确实一次只能处理单个工作簿/工作表,但咱们可以通过分步骤处理、合并数据的方式,把act1.xlsx和act2.xlsx里的活动都导入到同一个new_db数据库中。下面是具体的实现方案:

核心思路

分别实例化ExcelImporter处理每个工作簿,完成策略应用、数据库匹配等预处理后,将两个Importer的活动数据合并,再写入目标数据库;或者直接分两次将数据追加到同一个数据库中。

完整代码示例

from brightway2 import ExcelImporter, Database

# 处理第一个工作簿 act1.xlsx
fp_act1 = "act1.xlsx"
ei1 = ExcelImporter(fp_act1)
ei1.apply_strategies()  # 应用默认数据清洗/格式化策略
ei1.match_database(fields=['name'])  # 匹配已有数据库中的活动(按需调整字段)
# 可选:查看数据统计,确认预处理结果
print("处理act1后的统计:")
ei1.statistics()

# 处理第二个工作簿 act2.xlsx
fp_act2 = "act2.xlsx"
ei2 = ExcelImporter(fp_act2)
ei2.apply_strategies()
ei2.match_database(fields=['name'])
print("\n处理act2后的统计:")
ei2.statistics()

# 创建或获取目标数据库 new_db
try:
    new_db = Database("new_db")
except ValueError:
    # 如果数据库未注册,先完成注册
    new_db = Database("new_db")
    new_db.register()

# 方法1:合并两个Importer的活动数据后一次性写入
combined_activities = ei1.data + ei2.data
new_db.write(combined_activities)

# 方法2:分两次将数据追加到同一数据库(二选一即可)
# ei1.write_database("new_db")
# ei2.write_database("new_db")

print("\n数据导入完成,可查看new_db数据库确认结果")

关键注意事项

  • 活动ID唯一性:确保两个工作簿中的活动code字段(唯一标识符)不重复,否则后导入的活动会覆盖先导入的。如果存在重复ID,可以添加自定义策略处理(比如给重复ID加后缀)。
  • 策略自定义:如果默认策略不满足需求,可以在apply_strategies()之后添加自定义策略函数,比如ei1.strategies.append(your_custom_strategy)。
  • 数据校验:每次预处理后调用statistics()方法,查看活动数量、未匹配的交换项等信息,提前排查问题。

内容的提问来源于stack exchange,提问作者MPa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:08:57