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

Python读取Excel写入XML日期格式转换与循环逐行读数据问题咨询

问题1:Excel日期转指定格式写入XML解决方案

原有代码问题:

  1. 第一行创建的DATA子元素对象被第二行的单元格值赋值直接覆盖,导致最终无法写入XML
  2. 若Excel单元格本身设置为日期格式,sheet.cell()读取到的结果本身就是datetime对象,不需要调用strptime解析字符串,直接格式化即可
  3. 目标格式需要四位年份,使用%Y格式符,同时保留时分秒

修正后代码:

# 先创建DATA元素,不要覆盖变量
s2 = ET1.SubElement(PmtInf, 'DATA')
# 读取单元格日期值
cell_value = sheet.cell(row=2, column=3).value
# 格式化日期为目标格式,适配单元格直接返回datetime对象的场景
if isinstance(cell_value, datetime):
    date_str = cell_value.strftime('%d/%m/%Y %H:%M:%S')
else:
    # 若单元格返回字符串,先解析再格式化,原字符串如果是两位年用%y,四位年用%Y
    date_object = datetime.strptime(str(cell_value), '%d/%m/%y')
    date_str = date_object.strftime('%d/%m/%Y %H:%M:%S')
# 给XML元素赋值
s2.text = date_str
问题2:循环逐行读取Excel数据解决方案

原有代码问题:

  1. 行号写死为2,没有使用循环变量i实现递增
  2. 给InstrId、EndToEndId的text属性赋值后,又将变量重新赋值为常量字符串,属于无效代码,会丢失之前的元素引用

修正后代码:

for i in range(1,21):
    #first CdtTrfTxInf section with subsection
    CdtTrfTxInf = ET1.SubElement(PmtInf, 'CdtTrfTxInf')
    PmtId = ET1.SubElement(CdtTrfTxInf, 'PmtId')
    InstrId = ET1.SubElement(PmtId, 'InstrId')
    # 行号替换为循环变量i
    InstrId.text = sheet.cell(row=i, column=4).value
    EndToEndId = ET1.SubElement(PmtId, 'EndToEndId')
    EndToEndId.text = sheet.cell(row=i, column=3).value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:45:10