It's hard to say what exactly is your problem, but the first thing you should try is to use openpyxl optimized writer:
from openpyxl import Workbook
wb = Workbook(optimized_write = True)
ws = wb.create_sheet()
# now we'll fill it with 10k rows x 200 columns
for irow in xrange(10000):
ws.append(['%d' % i for i in xrange(200)])
wb.save('new_big_file.xlsx') # don't forget to save!
Also, consider switching to xlsxwriter in constant_memory
mode (see docs).
Hope that helps.