python写excel

确保已安装 xlsxwriter:

pip install xlsxwriter

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

import pandas as pd

创建示例 DataFrame

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

将 DataFrame 导出到 Excel 使用 xlsxwriter

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:基于单元格值的条件

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

示例 2:基于文本的条件

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

示例 3:基于日期的条件

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

示例 4:重复值

worksheet.conditional_format('A1:A10', {'type': 'duplicate',
                                        'format': format2})

示例 5:前 N 个值

worksheet.conditional_format('A1:A10', {'type': 'top',
                                        'value': 3,
                                        'format': format2})

示例 6:数据条

worksheet.conditional_format('A1:A10', {'type': 'data_bar',
                                        'bar_color': '#63C384'})

示例 7:图标集

worksheet.conditional_format('A1:A10', {'type': 'icon_set',
                                        'icon_style': '3_arrows'})

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

示例合并单元格

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()

下面是示例代码:

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的单元格将显示为浅红色背景和深红色字体,以便突出显示这些符合条件的单元格。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时尚IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值