如何用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
相关产品推荐
相关产品推荐

