如何使用 xlsxwritter 引擎在 pd.ExcelWriter 中写入新行 - 在底部的 python 中?
How to write a new line in pd.ExcelWriter using xlsxwritter engine- in python at the bottom?
我有几个 pandas 数据框,我正在使用 ExcelWriter 创建一个 Excel sheet。
我通常使用下面的命令
writer = pd.ExcelWriter(file_name, engine='xlsxwriter')
我所有的数据框都变成了一个 Excel sheet 我想在最后一个数据框之后写一个长句子。我的程序是自动化的,我每次都不知道数据帧的确切长度。所以我不能使用类似下面的东西。我的意思是我不能放像 'B44:F46'
这样的东西
import xlsxwriter
workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()
## adding 5-6 data frames
header2 = workbook.add_format({
'bold': True,
'align': 'center',
'border': 6,
'valign': 'vcenter',
'fg_color': '#D7E4BC',
'font_name':'Calibri',
'font_size': 12
})
worksheet.merge_range('B44:F46', "CompanyName:ABC \n Country:USA", header2)
workbook.close()
有没有办法在 python 中做到这一点?
如有任何建议,我们将不胜感激。提前致谢!!
获取数据帧中的行数(假设您有 2 个数据帧 df0 和 df1)
rows = len(df0.index)
rows += len(df1.index)
然后将它们添加到您添加最后一行的行
worksheet.merge_range('B'+str(rows)+':F46', "CompanyName:ABC \n Country:USA", header2)
要完成这项工作,您需要做几件事:
- 使用
df.shape
或 len(df)
跟踪输出数据帧中的结束行
- 在 merge_range() 中使用
(row, col)
语法而不是 A1 范围语法
- 在格式
中添加text_wrap
这是一个工作示例:
import pandas as pd
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data 1': [11, 12]})
df2 = pd.DataFrame({'Data 2': [21, 22, 23]})
df3 = pd.DataFrame({'Data 3': [31, 32, 33, 34]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter')
start_row = 0
# Output the data frames and keep track of the start/end row.
for df in (df1, df2, df3):
df.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False)
start_row += df.shape[0] + 1
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a format
header2 = workbook.add_format({
'bold': True,
'align': 'center',
'border': 6,
'valign': 'vcenter',
'fg_color': '#D7E4BC',
'font_name': 'Calibri',
'font_size': 12,
'text_wrap': True
})
# Write a merge range.
start_col = 0
end_col = 3
worksheet.merge_range(start_row, start_col, start_row + 1, end_col,
"CompanyName: ABC\nCountry: USA", header2)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
输出:
我有几个 pandas 数据框,我正在使用 ExcelWriter 创建一个 Excel sheet。 我通常使用下面的命令
writer = pd.ExcelWriter(file_name, engine='xlsxwriter')
我所有的数据框都变成了一个 Excel sheet 我想在最后一个数据框之后写一个长句子。我的程序是自动化的,我每次都不知道数据帧的确切长度。所以我不能使用类似下面的东西。我的意思是我不能放像 'B44:F46'
这样的东西import xlsxwriter
workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()
## adding 5-6 data frames
header2 = workbook.add_format({
'bold': True,
'align': 'center',
'border': 6,
'valign': 'vcenter',
'fg_color': '#D7E4BC',
'font_name':'Calibri',
'font_size': 12
})
worksheet.merge_range('B44:F46', "CompanyName:ABC \n Country:USA", header2)
workbook.close()
有没有办法在 python 中做到这一点?
如有任何建议,我们将不胜感激。提前致谢!!
获取数据帧中的行数(假设您有 2 个数据帧 df0 和 df1)
rows = len(df0.index)
rows += len(df1.index)
然后将它们添加到您添加最后一行的行
worksheet.merge_range('B'+str(rows)+':F46', "CompanyName:ABC \n Country:USA", header2)
要完成这项工作,您需要做几件事:
- 使用
df.shape
或len(df)
跟踪输出数据帧中的结束行
- 在 merge_range() 中使用
(row, col)
语法而不是 A1 范围语法 - 在格式 中添加
text_wrap
这是一个工作示例:
import pandas as pd
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data 1': [11, 12]})
df2 = pd.DataFrame({'Data 2': [21, 22, 23]})
df3 = pd.DataFrame({'Data 3': [31, 32, 33, 34]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter')
start_row = 0
# Output the data frames and keep track of the start/end row.
for df in (df1, df2, df3):
df.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False)
start_row += df.shape[0] + 1
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add a format
header2 = workbook.add_format({
'bold': True,
'align': 'center',
'border': 6,
'valign': 'vcenter',
'fg_color': '#D7E4BC',
'font_name': 'Calibri',
'font_size': 12,
'text_wrap': True
})
# Write a merge range.
start_col = 0
end_col = 3
worksheet.merge_range(start_row, start_col, start_row + 1, end_col,
"CompanyName: ABC\nCountry: USA", header2)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
输出: