Goal of the script is to take the data from an excel file that is generated daily from a cron job & append that data to the bottom of a ‘master’ excel file.
Here is where I am right now:
# Find the most recent excel file created by the cron job & open it.
localtime = time.localtime(time.time())
yy = localtime.tm_year
mm = localtime.tm_mon
dd = localtime.tm_mday
file_name = 'daily_' + str(yy) + '_' + str(mm) + '_' + str(dd-1) + '.xls'
file_loc = '/Users/' + file_name
new_sheet = open_workbook(file_loc, on_demand=True).sheet_by_index(0)
# Grab all the data from the recent cron job file starting at row 2 to avoid
# including headers.
for row in range(1, new_sheet.nrows):
values = []
for col in range(new_sheet.ncols):
values.append(new_sheet.cell(row,col).value)
"""
The above loop structures the list 'values[]' in a way that the print
statement of value looks like the below output; which matches the formatting of
master_file.xlsx:
2341511 Sports 12112 Dog 324.92
71611 Other 18192 Cat 128.17
...
"""
# Find the excel master file & open it.
sheet = open_workbook('master_file.xlsx').sheet_by_index(0)
# Find the first row that is empty.
new_row = sheet.nrows + 1
# Append the values[] list to the master file starting at row(new_row) and save
# the db file.
for row_num, row in enumerate(values, new_row):
for col_num, col in enumerate(row):
sheet.row(row_num).write(col_num, col)
sheet.save('master_file.xlsx')
My traceback error is:
File "daily.py", line 45, in <module>
sheet.row(row_num).write(col_num, col)
File "/Users/code/env/lib/python2.7/site-packages/xlrd/sheet.py", line 462, in row
for colx in xrange(len(self._cell_values[rowx]))
IndexError: list index out of range
Any help would be greatly appreciated!
Intuition from the code is that you’re not actually adding a row to the worksheet prior to iterating.
xlrd doesn’t look like it actually has methods to modify an existing worksheet. Check out this SO post which might help…
How to add new column and row to .xls file using xlrd