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

如何用Python的Pandas(或其他库)为CSV文件表头/行添加样式

给CSV添加样式的替代方案

CSV本质是纯文本文件,本身不支持任何格式(颜色、字体、对齐等)——这就是为啥你找不到直接给CSV加样式的方法啦。不过不用慌,我们可以用几个替代方案实现类似需求,下面给你详细说:

方案1:生成带样式的Excel文件(最推荐)

既然你已经了解过Excel的样式方案,其实可以直接把数据输出为带样式的Excel,操作起来也很简单。这里用xlsxwriter库举个例子:

import xlsxwriter

# 创建Excel文件和工作表
workbook = xlsxwriter.Workbook('styled_data.xlsx')
worksheet = workbook.add_worksheet()

# 定义样式:表头用蓝色背景、白色字体
header_style = workbook.add_format({
    'bg_color': '#4F81BD',
    'font_color': 'white',
    'bold': True,
    'align': 'center',
    'valign': 'vcenter'
})

# 定义普通行的样式:可选,比如浅灰色交替行
row_style1 = workbook.add_format({'bg_color': '#DCE6F1'})
row_style2 = workbook.add_format({'bg_color': '#FFFFFF'})

# 写入表头
headers = ['姓名', '年龄', '城市']
for col, header in enumerate(headers):
    worksheet.write(0, col, header, header_style)

# 写入数据
data = [
    ['张三', 25, '北京'],
    ['李四', 30, '上海'],
    ['王五', 28, '广州']
]

for row_num, row_data in enumerate(data, start=1):
    # 交替行样式
    style = row_style1 if row_num % 2 == 1 else row_style2
    for col_num, cell_value in enumerate(row_data):
        worksheet.write(row_num, col_num, cell_value, style)

# 设置列宽
worksheet.set_column(0, 2, 15)

workbook.close()

这个代码会生成一个表头蓝色、行交替变色的Excel,完全满足样式需求,而且Excel文件也方便分享和查看。

方案2:生成带样式的HTML表格

如果不想用Excel,可以生成HTML格式的表格,HTML支持丰富的样式,而且可以直接用浏览器打开,也能转成PDF。用pandas的话更快捷:

import pandas as pd

# 构造数据
data = {
    '姓名': ['张三', '李四', '王五'],
    '年龄': [25, 30, 28],
    '城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)

# 定义CSS样式
style = """
<style>
    table {border-collapse: collapse; width: 50%; margin: 20px;}
    th {background-color: #4F81BD; color: white; padding: 8px; text-align: center; border: 1px solid #ddd;}
    td {padding: 8px; border: 1px solid #ddd;}
    tr:nth-child(even) {background-color: #DCE6F1;}
</style>
"""

# 生成HTML并保存
html_content = style + df.to_html(index=False)
with open('styled_table.html', 'w', encoding='utf-8') as f:
    f.write(html_content)

打开这个HTML文件就能看到带样式的表格,要是需要PDF,还可以用pdfkit之类的库把HTML转成PDF。

方案3:生成RTF格式表格(小众但可用)

RTF也是支持样式的文本格式,不过用的人不多,这里简单提一下,比如用rtf库:

from rtf import RTF

rtf = RTF()
table = rtf.add_table(rows=4, cols=3)

# 设置表头样式
header_cells = table.rows[0].cells
for cell in header_cells:
    cell.set_bg_color('#4F81BD')
    cell.text_color = '#FFFFFF'
    cell.bold = True

# 填充表头和数据
header_cells[0].text = '姓名'
header_cells[1].text = '年龄'
header_cells[2].text = '城市'

data = [['张三', '25', '北京'], ['李四', '30', '上海'], ['王五', '28', '广州']]
for row_num, row_data in enumerate(data, start=1):
    cells = table.rows[row_num].cells
    for col_num, text in enumerate(row_data):
        cells[col_num].text = text
        # 交替行背景
        if row_num % 2 == 1:
            cells[col_num].set_bg_color('#DCE6F1')

with open('styled_table.rtf', 'w', encoding='utf-8') as f:
    f.write(rtf.output())

不过这个方案不如前两个实用,除非你有特定的RTF需求。

总结一下:如果是需要方便他人查看和编辑,优先选Excel方案;如果是网页端展示或者转PDF,选HTML方案。CSV本身确实没法加样式,只能用这些替代格式啦~

内容的提问来源于stack exchange,提问作者Vũ Minh Vương

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:12:28