0

All,

I have written a script to write header and data into a excel sheet. But my actual requirement is to write sub header as well and need to merge the cells from the 2nd row.

import xlsxwriter
import pandas as pd
import numpy as np
import openpyxl
import time
# Creating a dataframe
df = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC'))
column_list = df

# Create a Pandas Excel writer using XlsxWriter engine.
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', startrow=2, header=False, index=False)

# Get workbook and worksheet objects
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 12, 'color' : 'white', 'fg_color': '#00007f','bold': True, 'border' : 1})

for idx, val in enumerate(column_list):
    worksheet.write(0, idx, val, header_fmt)

worksheet.write(1, 1, 'Sample', header_fmt)

font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 9 })

worksheet.set_column('A:C', None, font_fmt)
worksheet.set_row(0, None, header_fmt)

writer.save()

EDIT:

Expected Output: 1

There are 4 sections in the expected output, all of them are from different Dataframes. I need to merge all those Dataframes' output into a single sheet as shown in the image.

1
  • For subheading you can use pandas.MultiIndex (docs). For the second part of your question can you provide a small example of how you'd like to merge your data? Commented Feb 2, 2020 at 1:16

1 Answer 1

1

How about this? Is this what you want?

import xlsxwriter
import pandas as pd
import numpy as np
import openpyxl
import time
# Creating a dataframe                                                                                                                                       
df = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC'))
column_list = df

# Create a Pandas Excel writer using XlsxWriter engine.                                                                                                      
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', startrow=2, header=False, index=False)

# Get workbook and worksheet objects                                                                                                                         
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 12, 'color' : 'white', 'fg_color': '#00007f','bold': True, 'border' : 1})

merge_format = workbook.add_format({'align': 'center'})

worksheet.merge_range('A2:C2', 'Sample', merge_format)

for idx, val in enumerate(column_list):
        worksheet.write(0, idx, val,header_fmt)                                                                                                

        font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 9 })

        worksheet.set_column('A:C',None, font_fmt)
        worksheet.set_row(0,None, header_fmt)

        writer.save()
Sign up to request clarification or add additional context in comments.

1 Comment

you can see 4 sections in the expected output, all of them are from different Dataframe, i need to merge all those Dataframe output into a single sheet as described in the attached format.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.