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

如何用Python将带user、password、company表头的CSV表格写入docx文档

用Python将CSV表格写入Docx文档的实现方法

嘿,这个需求很实用,我来给你一步步讲清楚怎么实现👇

首先,我们需要用到两个工具:Python标准库的csv(用来读取CSV文件),以及第三方库python-docx(用来创建和编辑Docx文档)。先把依赖装上:

pip install python-docx

接下来是完整的代码示例,我给每一步都加了注释,你直接替换路径就能用:

import csv
from docx import Document
from docx.shared import Pt
from docx.enum.table import WD_ALIGN_VERTICAL

# 初始化一个空白的Docx文档
doc = Document()

# 可选:给文档加个标题,让内容更规整
doc.add_heading('用户信息汇总表', level=1)

# 替换成你的CSV文件实际路径,比如'./users.csv'
csv_file_path = '你的CSV文件路径.csv'

# 读取CSV文件内容
with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
    # 用DictReader读取,这样可以通过表头直接取对应列的值
    csv_reader = csv.DictReader(csv_file)
    # 获取CSV的表头(也就是user、password、company)
    table_headers = csv_reader.fieldnames
    # 把所有数据行存成列表,方便后续处理
    data_rows = list(csv_reader)

# 如果CSV里有数据,就创建表格
if data_rows:
    # 创建表格:行数=数据行数+1(表头行),列数=表头的数量
    user_table = doc.add_table(rows=len(data_rows)+1, cols=len(table_headers))
    # 给表格加网格边框,默认样式是没有边框的,这个样式更清晰
    user_table.style = 'Table Grid'

    # 处理表头行:加粗、居中显示
    header_cells = user_table.rows[0].cells
    for idx, header in enumerate(table_headers):
        header_cells[idx].text = header
        # 设置表头文字加粗
        header_paragraph = header_cells[idx].paragraphs[0]
        header_run = header_paragraph.runs[0]
        header_run.bold = True
        # 文字居中对齐
        header_paragraph.alignment = WD_ALIGN_VERTICAL.CENTER
        # 可选:调整字体大小
        header_run.font.size = Pt(11)

    # 填充数据行
    for row_idx, row_data in enumerate(data_rows):
        data_cells = user_table.rows[row_idx+1].cells
        for col_idx, header in enumerate(table_headers):
            # 把CSV对应列的值写入单元格
            data_cells[col_idx].text = row_data[header]
            # 可选:设置单元格内容垂直居中
            data_cells[col_idx].vertical_alignment = WD_ALIGN_VERTICAL.CENTER

# 保存最终的Docx文档,替换成你想要的文件名
doc.save('用户信息表.docx')

几个实用的小优化建议

  • 如果你的CSV文件是带BOM的UTF-8格式(比如Windows下导出的),把打开文件的编码改成utf-8-sig就行,避免出现乱码
  • 可以调整表格列宽,比如user_table.columns[0].width = Pt(120),单位是磅
  • 如果需要给不同行设置不同样式(比如隔行变色),可以通过row.cells[0].paragraphs[0].runs[0].font.color.rgb = RGBColor(240,240,240)来实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:44:28