python - 如何在 pd.ExcelWriter 中使用 xlsxwritter 引擎在底部的 python 中编写新行?

标签 python excel pandas xlsxwriter pandas.excelwriter

我有几个 Pandas 数据框,我正在使用 ExcelWriter 创建一个 Excel 工作表。
我通常使用以下命令

writer = pd.ExcelWriter(file_name, engine='xlsxwriter')
我的所有数据框都转到一张 Excel 表,我想在最后一个数据框之后写一个长句子。我的程序是自动化的,我每次都不确切知道数据帧的长度。所以我不能使用像下面这样的东西。我的意思是我不能放像'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 中做到这一点?
任何建议将不胜感激。提前致谢!!

最佳答案

要完成这项工作,您需要做一些事情:

  • 使用 df.shape 跟踪输出数据帧中的最后一行或 len(df)
  • 使用 (row, col) merge_range() 中的语法而不是 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()
    
    输出:
    enter image description here

    关于python - 如何在 pd.ExcelWriter 中使用 xlsxwritter 引擎在底部的 python 中编写新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70282629/

    相关文章:

    python - QTableWidget 动态行 w/QComboBox

    excel - 如何在循环中为不同范围编写两个 IF 语句,VBA

    c# - 是否需要使用 Marshal.ReleaseComObject 释放*每个* Excel 互操作对象?

    Python Pandas 按位置和日期/月份的平均值

    python - 将大型 SAS 数据集转换为 hdf5

    python组合每对行: making script more efficient

    python - 为 mechanize.Browser 设置超时

    python - 如何防止库修改根记录器?

    excel - 根据行中的另一个单元格更改多个单元格

    python-3.x - 如何向 Pandas 数据框列添加尾随零?