使用 Python 将数据保存到 Excel 并美化格式化数据

有两组数据,希望将它们保存到 Excel 文件的不同工作表中,并对 Excel 中的数据格式进行美化。可以使用 xlsxwriter 来解决问题。
在这里插入图片描述

# 测试数据
data1 = pd.DataFrame(
    {'日期': ['2023/1/1', '2023/2/10', '2023/2/21', '2023/2/13'], '整数': [196382, 287393, 5274984, 638164],
     '千分位整数': [8145132, 128145, 536278, 463816], '文本': ['Python', 'Hello', 'For', 'Print'],
     '浮点数': [18.45, 75.24, 90, 80.12], '百分数': [0.5678, 0.723, 0.3345, 0.2521]})
data2 = pd.DataFrame(
    {'日期': ['2022/3/1', '2022/2/1', '2022/5/1', '2022/6/1'], '整数': [233211, 24321, 35345, 23223],
    '千分位整数': [920478, 23454, 123749, 2345875],'文本': ['While', 'For', 'Else', 'If'],
    '浮点数': [93.45, 67.24, 80, 80.56],'百分数': [0.4884, 0.9694, 0.6752, 0.2633]})

导入 xlsxwriter 包并创建 Excel 文件

Workbook() 用于创建新的 Excel 文件。

import xlsxwriter
workbook = xlsxwriter.Workbook("new_excel.xlsx")

创建工作表

add_worksheet() 用于创建工作表。

worksheet1 = workbook.add_worksheet('sheet01')
worksheet2 = workbook.add_worksheet('sheet02')

设置表头

使用 write_row() 设置表头。

write_row()语法格式:

worksheet.write_row(row, col, data, cell_format)。

# 设置表头样式
header_format = workbook.add_format({
 'valign': 'top',
 'fg_color': '#1b75da',
 'border': 1,
 'font_color': 'white'})
worksheet1.write_row(0, 0, df1.columns, header_format)
worksheet2.write_row(0, 0, df2.columns, header_format)

创建某种格式

format.set_num_format():此方法用于在 Excel 中定义数字的格式。控制数字是显示为整数、浮点数、日期、货币值还是其他用户定义的格式。

可以使用格式字符串或 Excel 内置格式的索引来指定单元格的数字格式。

# 日期格式
format_datetime = workbook.add_format({'border': 1})
format_datetime.set_num_format(14) # 索引 14 代表格式 "m/d/yy"
format_datetime.set_font_size(12) # 字号

# 通用格式
format_general = workbook.add_format({'border': 1})
format_general.set_num_format(0) # 索引 0 代表通用格式
format_general.set_font_size(12)

# 整数格式
format_integer = workbook.add_format({'border': 1})
format_integer.set_num_format(1)
format_integer.set_font_size(12)

# 浮点数格式
format_float = workbook.add_format({'border':1})
format_float.set_num_format(2)
format_float.set_font_size(12)

# 包含千位分隔符的整数格式 
format_integer_separator = workbook.add_format({'border': 1})
format_integer_separator.set_num_format(3)
format_integer_separator.set_font_size(12)

# 百分数格式 
format_percent = workbook.add_format({'border':1})
format_percent.set_num_format(10)
format_percent.set_font_size(12)

将数据保存到 Excel 中

write_column() 将数据保存到 Excel 中。

worksheet1.write_column(1, 0, df1.iloc[:, 0], format_datetime)
worksheet1.write_column(1, 1, df1.iloc[:, 1], format_integer)
worksheet1.write_column(1, 2, df1.iloc[:, 2], format_integer_separator)
worksheet1.write_column(1, 3, df1.iloc[:, 3], format_general)
worksheet1.write_column(1, 4, df1.iloc[:, 4], format_float)
worksheet1.write_column(1, 5, df1.iloc[:, 5], format_percent)
worksheet2.write_column(1, 0, df2.iloc[:, 0], format_datetime)
worksheet2.write_column(1, 1, df2.iloc[:, 1], format_integer)
worksheet2.write_column(1, 2, df2.iloc[:, 2], format_integer_separator)
worksheet2.write_column(1, 3, df2.iloc[:, 3], format_general)
worksheet2.write_column(1, 4, df2.iloc[:, 4], format_float)
worksheet2.write_column(1, 5, df2.iloc[:, 5], format_percent)

设置列宽

为了更好地显示数据,还可以使用 set_column() 设置列宽。

worksheet1.set_column('A:A', 15)
worksheet1.set_column('B:B', 15)
worksheet1.set_column('C:C', 15)
worksheet1.set_column('D:D', 15)
worksheet1.set_column('E:E', 15)
worksheet1.set_column('F:F', 15)
worksheet2.set_column('A:A', 15)
worksheet2.set_column('B:B', 15)
worksheet2.set_column('C:C', 15)
worksheet2.set_column('D:D', 15)
worksheet2.set_column('E:E', 15)
worksheet2.set_column('F:F', 15)

完成写入

workbook.close()

完整代码:

import pandas as pd
data1 = pd.DataFrame(
    {'日期': ['2023/1/1', '2023/2/10', '2023/2/21', '2023/2/13'], '整数': [196382, 287393, 5274984, 638164],
     '千分位整数': [8145132, 128145, 536278, 463816], '文本': ['Python', 'Hello', 'For', 'Print'],
     '浮点数': [18.45, 75.24, 90, 80.12], '百分数': [0.5678, 0.723, 0.3345, 0.2521]})
data2 = pd.DataFrame(
    {'日期': ['2022/3/1', '2022/2/1', '2022/5/1', '2022/6/1'], '整数': [233211, 24321, 35345, 23223],
     '千分位整数': [920478, 23454, 123749, 2345875], '文本': ['While', 'For', 'Else', 'If'],
     '浮点数': [93.45, 67.24, 80, 80.56], '百分数': [0.4884, 0.9694, 0.6752, 0.2633]})
print(data1)
print(data2)

import xlsxwriter
workbook = xlsxwriter.Workbook("new_excel.xlsx")

worksheet1 = workbook.add_worksheet('sheet01')
worksheet2 = workbook.add_worksheet('sheet02')

header_format = workbook.add_format({
 'valign': 'top',
 'fg_color': '#1b75da',
 'border': 1,
 'font_color': 'white'})
worksheet1.write_row(0, 0, data1.columns, header_format)
worksheet2.write_row(0, 0, data2.columns, header_format)

format_datetime = workbook.add_format({'border': 1})
format_datetime.set_num_format(14) 
format_datetime.set_font_size(12)

format_general = workbook.add_format({'border': 1})
format_general.set_num_format(0) 
format_general.set_font_size(12)

format_integer = workbook.add_format({'border': 1})
format_integer.set_num_format(1)
format_integer.set_font_size(12)

format_float = workbook.add_format({'border':1})
format_float.set_num_format(2)
format_float.set_font_size(12)

format_integer_separator = workbook.add_format({'border': 1})
format_integer_separator.set_num_format(3)
format_integer_separator.set_font_size(12)

format_percent = workbook.add_format({'border':1})
format_percent.set_num_format(10)
format_percent.set_font_size(12)

worksheet1.write_column(1, 0, data1.iloc[:, 0], format_datetime)
worksheet1.write_column(1, 1, data1.iloc[:, 1], format_integer)
worksheet1.write_column(1, 2, data1.iloc[:, 2], format_integer_separator)
worksheet1.write_column(1, 3, data1.iloc[:, 3], format_general)
worksheet1.write_column(1, 4, data1.iloc[:, 4], format_float)
worksheet1.write_column(1, 5, data1.iloc[:, 5], format_percent)
worksheet2.write_column(1, 0, data2.iloc[:, 0], format_datetime)
worksheet2.write_column(1, 1, data2.iloc[:, 1], format_integer)
worksheet2.write_column(1, 2, data2.iloc[:, 2], format_integer_separator)
worksheet2.write_column(1, 3, data2.iloc[:, 3], format_general)
worksheet2.write_column(1, 4, data2.iloc[:, 4], format_float)
worksheet2.write_column(1, 5, data2.iloc[:, 5], format_percent)

worksheet1.set_column('A:A', 15)
worksheet1.set_column('B:B', 15)
worksheet1.set_column('C:C', 15)
worksheet1.set_column('D:D', 15)
worksheet1.set_column('E:E', 15)
worksheet1.set_column('F:F', 15)
worksheet2.set_column('A:A', 15)
worksheet2.set_column('B:B', 15)
worksheet2.set_column('C:C', 15)
worksheet2.set_column('D:D', 15)
worksheet2.set_column('E:E', 15)
worksheet2.set_column('F:F', 15)

workbook.close()

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

使用Python中的pandas库将数据保存Excel中,可以按照以下步骤进行操作。 首先,需要导入pandas库,如下所示: ```python import pandas as pd ``` 然后,可以使用pandas的DataFrame对象来存储数据,如下所示: ```python data = {"name":["lily","alice"],"cost":[100,20]} df = pd.DataFrame(data) ``` 接下来,可以创建一个Excel写入器(ExcelWriter)对象,并指定要保存Excel文件路径,如下所示: ```python writer = pd.ExcelWriter("example.xlsx") ``` 然后,可以使用DataFrame的to_excel方法将数据写入到Excel中的一个或多个sheet中,如下所示: ```python df.to_excel(writer, sheet_name='sheet1') ``` 如果要写入多个sheet,可以重复调用to_excel方法,并指定不同的sheet名称,如下所示: ```python df2 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}) df2.to_excel(writer, sheet_name='sheet2') ``` 最后,要保存Excel文件,可以调用ExcelWriter对象的save方法,如下所示: ```python writer.save() ``` 这样就完成了将数据保存Excel文件中的操作。完整的代码示例如下: ```python import pandas as pd data = {"name":["lily","alice"],"cost":[100,20]} df = pd.DataFrame(data) writer = pd.ExcelWriter("example.xlsx") df.to_excel(writer, sheet_name='sheet1') df2 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}) df2.to_excel(writer, sheet_name='sheet2') writer.save() ``` 这段代码将会创建一个名为"example.xlsx"的Excel文件,并将两个DataFrame对象的数据分别保存在两个不同的sheet中。 希望这个回答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值