python写excel

确保已安装 xlsxwriter:

bash 复制代码
pip install xlsxwriter

使用 xlsxwriter 设置特定单元格的背景色:

python 复制代码
import pandas as pd

创建示例 DataFrame

python 复制代码
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

将 DataFrame 导出到 Excel 使用 xlsxwriter

python 复制代码
file_path = 'output_xlsxwriter.xlsx'
with pd.ExcelWriter(file_path, engine='xlsxwriter') as writer:
    df1.to_excel(writer, index=False, sheet_name='Sheet1')

    # 获取 xlsxwriter workbook 和 worksheet 对象
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']

    # 定义红色背景格式
    red_format = workbook.add_format({'bg_color': '#FF0000'})

    # 设置第2行,第2列(即 B2 单元格)的背景色为红色
    worksheet.conditional_format(f'B2:B2', {'type': 'no_blanks', 'format': red_format})

下是一些常用的键和它们的作用:

复制代码
bg_color: 设置单元格的背景色
font_color: 设置文字的颜色
bold: 设置为 True 或 False,以粗体显示文字
italic: 设置为 True 或 False,以斜体显示文字
underline: 设置为 True 或 False,以给文字加下划线
font_size: 设置文字的大小
align: 设置文字的对齐方式,如左对齐、居中、右对齐等
border: 设置单元格的边框样式

在使用 xlsxwriter 库的 conditional_format() 方法时,有多种不同的条件类型可以使用。这些条件类型允许你根据单元格的内容或其他条件来设置格式。以下是一些常见的条件类型:

复制代码
blanks: 空单元格。    
no_blanks: 非空单元格。
cell: 基于单元格值的条件。
text: 基于单元格文本的条件。
time_period: 基于日期/时间的条件。
date: 基于具体日期的条件。
unique: 唯一值。
duplicate: 重复值。
top: 前 N 个值。
bottom: 后 N 个值。
average: 与平均值相关的条件(高于、低于等)。
2_color_scale: 两色渐变。
3_color_scale: 三色渐变。
data_bar: 数据条。
icon_set: 图标集。

每种条件类型还可以有更加具体的配置选项。下面是一些示例:

示例 1:基于单元格值的条件

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'cell',
                                        'criteria': 'greater than',
                                        'value': 5,
                                        'format': format2})

示例 2:基于文本的条件

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'text',
                                        'criteria': 'containing',
                                        'value': 'foo',
                                        'format': format2})

示例 3:基于日期的条件

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'date',
                                        'criteria': 'greater than',
                                        'value': '2024-01-01',
                                        'format': format2})

示例 4:重复值

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'duplicate',
                                        'format': format2})

示例 5:前 N 个值

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'top',
                                        'value': 3,
                                        'format': format2})

示例 6:数据条

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'data_bar',
                                        'bar_color': '#63C384'})

示例 7:图标集

python 复制代码
worksheet.conditional_format('A1:A10', {'type': 'icon_set',
                                        'icon_style': '3_arrows'})

你可以根据需要选择适合你的条件类型,并结合格式化选项来实现所需的效果。如果你需要更多详细信息,可以参考 XlsxWriter 官方文档。

示例合并单元格

python 复制代码
import xlsxwriter

# 创建一个新的Excel文件并添加一个工作表
workbook = xlsxwriter.Workbook('split_example.xlsx')
worksheet = workbook.add_worksheet()

# 合并A1到B1单元格
worksheet.merge_range('A1:B1', 'Merged Cell')

# 拆分合并的单元格
# 参数解释:起始行、起始列、结束行、结束列、要插入的数据
worksheet.merge_range('A2:A3', 'Split 1')
worksheet.merge_range('B2:B3', 'Split 2')

# 关闭工作簿
workbook.close()

下面是示例代码:

python 复制代码
import xlsxwriter

# 创建一个新的Excel文件并添加一个工作表
workbook = xlsxwriter.Workbook('conditional_format.xlsx')
worksheet = workbook.add_worksheet()

# 添加一些数据到单元格A1到A10
data = [1, 6, 3, 8, 2, 10, 4, 7, 9, 5]
worksheet.write_column('A1', data)

# 定义格式
bg_format1 = workbook.add_format({'bg_color': '#FFFF00'})
bg_format2 = workbook.add_format({'bg_color': '#A9D08E'})
border_format = workbook.add_format({'border': 1})
text_format = workbook.add_format({'font_color': 'red'})
format2 = workbook.add_format({'bg_color': '#FFC7CE', 'font_color': '#9C0006'})


# 设置条件格式来标记大于5的单元格
worksheet.conditional_format('A1:A10', {'type': 'cell',
                                        'criteria': 'greater than',
                                        'value': 5,
                                        'format': text_format })
#设置背景色
worksheet.conditional_format('A1:A14',{'type': 'no_blanks', 'format': bg_format2})   #非空白单元格   
worksheet.conditional_format('A1:A14',{'type': 'blanks', 'format': bg_format2})     #空白单元格
#设置外边框                                 
worksheet.conditional_format('A1:{}{}'.format(column_name, l_end),
                                          {'type': 'blanks', 'format': border_format})
#合并单元格
worksheet.merge_range('A2:A3', 'Split 1')
# 关闭工作簿
workbook.close()

解释代码

  1. 创建数据

    • 使用 write_column() 方法将列表 data 中的数据写入工作表的 A 列(A1 到 A10)。
  2. 创建条件格式的格式对象

    • 使用 add_format() 方法创建一个格式对象 format2 ,这里设置了背景颜色为浅红色 (#FFC7CE),字体颜色为深红色 (#9C0006)。
  3. 设置条件格式

    • 使用 conditional_format() 方法设置条件格式。指定 'A1:A10' 作为应用条件格式的单元格范围。
    • 使用条件字典参数指定:
      • 'type':条件类型为 'cell',即基于单元格值的条件。
      • 'criteria':条件标准为 'greater than',表示大于指定值。
      • 'value':条件的比较值为 5
      • 'format':应用的格式为 format2,即大于5的单元格将应用 format2 中定义的格式。
  4. 保存和关闭工作簿

    • 使用 workbook.close() 方法保存并关闭创建的 Excel 文件。

通过这样设置,Excel 文件中大于5的单元格将显示为浅红色背景和深红色字体,以便突出显示这些符合条件的单元格。

相关推荐
数据智能老司机7 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机8 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i8 小时前
drf初步梳理
python·django
每日AI新事件8 小时前
python的异步函数
python
这里有鱼汤9 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook18 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室19 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三20 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试