gpt4 book ai didi

python - 使用 xlsxwriter 格式化多个工作表

转载 作者:行者123 更新时间:2023-11-28 19:17:30 25 4
gpt4 key购买 nike

如何使用 Python 中的 xlsxwriter 库将相同的格式复制到同一 Excel 文件的不同工作表?

我试过的代码是:

import xlsxwriter

import pandas as pd
import numpy as np

from xlsxwriter.utility import xl_rowcol_to_cell

df = pd.DataFrame()
df = pd.read_excel('TrendAnalysis.xlsx')



# Create a Pandas Excel writer using XlsxWriter as the engine.
# Save the unformatted results
writer_orig = pd.ExcelWriter('TrendAnalysis.xlsx', engine='xlsxwriter')
df.to_excel(writer_orig, index=True)
writer_orig.save()

work = ["isu-wise", "ISU-BFS", "ISU-CPG", "ISU-ER", "ISU-GE", "ISU-GOV Domestic", "ISU-GOV Overseas", "ISU-HC"]
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('TrendAnalysis.xlsx', engine='xlsxwriter')
for i in range(0,len(work)):
df.to_excel(writer, index=True, sheet_name=work[i])

# Get access to the workbook and sheet
workbook = writer.book
worksheet = writer.sheets[work[i]]

print worksheet
# We need the number of rows in order to place the totals
number_rows = len(df.index)

# Total formatting
total_fmt = workbook.add_format({'align': 'right', 'num_format': '#,##0',
'bold': True, 'bottom':6})

# Add total rows
for column in range(1,3):
# Determine where we will place the formula
cell_location = xl_rowcol_to_cell(number_rows+1, column)
# Get the range to use for the sum formula
start_range = xl_rowcol_to_cell(1, column)
end_range = xl_rowcol_to_cell(number_rows, column)
# Construct and write the formula
formula = "=SUM({:s}:{:s})".format(start_range, end_range)
worksheet.write_formula(cell_location, formula, total_fmt)

# Add a total label
worksheet.write_string(number_rows+1, 0, "Total",total_fmt)
i+=1

writer.save()
workbook.close()

它多次创建同一张表。不在工作簿的第一个之后导航和工作表。代码没有错误,否则会执行所需的格式设置。

最佳答案

可能为时已晚,但这是我为此所做的。在我的示例中,我有 2 个 DataFrame,我想卡住 Pane ,向每列添加过滤器,并格式化保存在同一个 excel 文件中的两个工作表的标题。

writer = pd.ExcelWriter(path_of_excel_file+'output.xlsx')
sheets_in_writer=['Sheet1','sheet2']
data_frame_for_writer=[df1, df2]

for i,j in zip(data_frame_for_writer,sheets_in_writer):
i.to_excel(writer,j,index=False)

### Assign WorkBook
workbook=writer.book
# Add a header format
header_format = workbook.add_format({'bold': True,'text_wrap': True,'size':10,
'valign': 'top','fg_color': '#c7e7ff','border': 1})
### Apply same format on each sheet being saved
for i,j in zip(data_frame_for_writer,sheets_in_writer):
for col_num, value in enumerate(i.columns.values):
writer.sheets[j].write(0, col_num, value, header_format)
writer.sheets[j].autofilter(0,0,0,i.shape[1]-1)
writer.sheets[j].freeze_panes(1,0)
writer.save()

关于python - 使用 xlsxwriter 格式化多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31855675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com