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

使用Openpyxl导入CSV到Excel时指定列报错及打开恢复异常求助

问题解决方案

1 第1、10列格式错误修复

问题根因

你当前将两列的值转为float类型存储,仅靠设置数字格式无法实现字符串样式的正常显示:如果原始CSV中对应值包含前导零,转为浮点型时前导零会直接丢失,后续设置数字格式也无法恢复,就会出现需要手动转字符串才能正常显示的问题。

修复方法

直接将对应列的值以字符串类型写入,若需要保证固定10位长度、不足位补前导零,可调用zfill()方法处理。


2 Excel打开报错修复

问题根因

代码存在两处关键错误:

  • 缩进错误:遍历reader的for循环写在了with open代码块之外,with块执行结束后CSV文件句柄已自动关闭,csv.reader无法正常读取数据,会写入异常无效内容到Excel
  • 遍历范围错误:range(1, len(row))为左闭右开区间,会漏掉CSV最后一列数据,写入无效空值导致文件结构损坏,触发Excel恢复提示

修复方法

调整代码缩进层级,修正遍历范围,将读取、写入逻辑都放在with open块内。


修正后完整代码

import csv
import openpyxl

# 此处省略wb_1、ws_1、destination_file的初始化逻辑,需和你原有逻辑保持一致
with open('file_modified.csv', 'r') as f:
    reader = csv.reader(f, delimiter="|")
    next(reader, None) # 跳过CSV表头
    i = 2 # 从Excel第2行开始写入
    for row in reader:
        # 修正遍历范围,覆盖所有列
        for j in range(1, len(row)+1):
            if j == 1 or j == 10:
                # 直接存字符串,zfill(10)可实现不足10位时自动补前导零
                ws_1.cell(row=i, column=j).value = row[j-1].zfill(10)
            else:
                ws_1.cell(row=i, column=j).value = row[j-1]
        i += 1
wb_1.save(destination_file)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 02:27:05