You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python将CSV转为带Excel表格格式的XLSX并迁移?

实现CSV转Excel格式化表格并迁移文件

当然可以实现!你当前的脚本已经完成了CSV转Excel和文件迁移的基础功能,只需要补充代码来创建Excel原生的结构化表格(也就是「插入>表格」生成的那种带筛选、条纹样式的格式化表格)。Pandas的to_excel方法只是写入原始数据,不会生成Excel的Table对象,我们可以借助openpyxl库来完成这个需求。

修改后的完整代码

import os
import shutil
import pandas as pd
from openpyxl import load_workbook
from openpyxl.worksheet.table import Table, TableStyleInfo
from openpyxl.utils import get_column_letter

# 配置路径
src_csv = r"C:\Users\xxxx\Python\filename.csv"
temp_xlsx = r"C:\Users\xxxx\Python\filename.xlsx"
dest_dir = r"C:\Users\xxxx\Python\repository"

# 1. CSV转Excel(指定openpyxl为引擎,方便后续操作表格结构)
df = pd.read_csv(src_csv)
df.to_excel(temp_xlsx, index=None, header=True, engine='openpyxl')

# 2. 加载Excel文件并创建原生格式化表格
wb = load_workbook(temp_xlsx)
ws = wb.active  # 获取当前活跃的工作表

# 计算表格的数据范围(从A1到最后一行最后一列)
max_col_letter = get_column_letter(ws.max_column)
max_row_num = ws.max_row
table_range = f"A1:{max_col_letter}{max_row_num}"

# 创建Table对象,设置显示名称
table = Table(displayName="CSV_Data_Table", ref=table_range)

# 配置表格样式(模拟Excel默认的「插入>表格」样式)
table_style = TableStyleInfo(
    name="TableStyleMedium9",  # 可选样式:TableStyleLightXX/MediumXX/DarkXX
    showFirstColumn=False,
    showLastColumn=False,
    showRowStripes=True,
    showColumnStripes=False
)
table.tableStyleInfo = table_style

# 将表格添加到工作表
ws.add_table(table)

# 保存修改后的Excel文件
wb.save(temp_xlsx)

# 3. 迁移文件到指定目录
dest_file_path = os.path.join(dest_dir, os.path.basename(temp_xlsx))
shutil.copy2(temp_xlsx, dest_file_path)
print(f"格式化表格文件已成功迁移至:{dest_file_path}")

关键步骤说明

  • 指定openpyxl引擎:Pandas默认用xlwt处理xls格式,要操作xlsx的表格结构,必须指定engine='openpyxl',确保后续能读取并修改Excel的底层结构。
  • 计算表格范围:通过ws.max_columnws.max_row自动获取数据边界,用get_column_letter把数字列号转为Excel的字母列名(比如1→A),避免手动写死范围。
  • 自定义表格样式TableStyleInfo可以调整表格的条纹、边框、首列高亮等样式,TableStyleMedium9是Excel默认的浅蓝条纹样式,你可以根据需求替换成其他内置样式(比如TableStyleLight1)。
  • 添加原生表格ws.add_table(table)会把数据区域转换为Excel原生表格,生成后支持排序、筛选、自动扩展等表格专属功能,和手动点击「插入>表格」效果完全一致。

注意事项

  • 确保已安装openpyxl库:如果没安装,执行pip install openpyxl即可。
  • 如果CSV包含特殊格式(比如日期、货币),建议在Pandas读取时先做格式处理(比如pd.read_csv(..., parse_dates=['日期列'])),避免表格生成后格式异常。

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

火山引擎 最新活动