The question isn't 100% clear around the "string in the cells" but here is how you could add named ranges to the data in dataframes exported to Excel, using xlsxwriter:
import pandas as pd
from xlsxwriter.utility import xl_range_abs
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data1': [11, 12, 13, 14],
'Data2': [11, 12, 13, 14]})
df2 = pd.DataFrame({'Data1': [11, 12, 13, 14],
'Data2': [11, 12, 13, 14]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas.xlsx', engine='xlsxwriter')
# Position the dataframes in the worksheet.
df1.to_excel(writer, sheet_name='Sheet1') # Default position, cell A1.
df2.to_excel(writer, sheet_name='Sheet1', startrow=5)
# Get the xlsxwriter workbook object.
workbook = writer.book
# Set a defined name range.
(max_row, max_col) = df1.shape
cell_range = xl_range_abs(1, 1, max_row, max_col)
cell_range = '=Sheet1!' + cell_range
workbook.define_name('Sheet1!Range1', cell_range)
# Set another range.
previous_max_row = max_row + 1
(max_row, max_col) = df2.shape
cell_range = xl_range_abs(previous_max_row + 1, 1,
previous_max_row + max_row, max_col)
cell_range = '=Sheet1!' + cell_range
workbook.define_name('Sheet1!Range2', cell_range)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
Output:
