Я не эксперт, но могу придумать одну из причин для внедрения Runnable вместо продолжения Thread: Java поддерживает только одно наследование, поэтому вы можете расширить только один класс.
Изменить: это изначально сказал: «Для реализации интерфейса требуется меньше ресурсов». также, но вам нужно создать новый экземпляр Thread любым способом, так что это было неправильно.
Выяснил это сам:
#Prepare the excel we want to write to
t=pd.date_range('2004-01-31', freq='M', periods=4)
first=pd.DataFrame({'A':[1,1,1,1],
'B':[2,2,2,2]}, index=t)
first.index=first.index.strftime('%Y-%m-%d')
writer=pd.ExcelWriter('test.xlsx')
first.to_excel(writer, sheet_name='Here')
first.to_excel(writer, sheet_name='Keep')
#read the existing sheets so that openpyxl won't create a new one later
book = load_workbook('test.xlsx')
writer = pandas.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
#update without overwrites
update=pd.DataFrame({'A':[3,4],
'B':[4,5]}, index=(pd.date_range('2004-04-30',
periods=2,
freq='M').strftime('%Y-%m-%d')))
update.to_excel(writer, "Here", startrow=1, startcol=2)
writer.save()
Я предлагаю вам обновить до 2.4 (либо бета-версию) openpyxl, либо использовать встроенную поддержку фреймов данных. Теперь они легко могут быть преобразованы openypxl в строки, в которые вы делаете то, что хотите.
См. http://openpyxl.readthedocs.io/en/latest/pandas.html для деталей.