Copying a row from a range of Excel files to another
MRAB
python at mrabarnett.plus.com
Wed Jun 26 15:07:23 EDT 2019
More information about the Python-list mailing list
Wed Jun 26 15:07:23 EDT 2019
- Previous message (by thread): Copying a row from a range of Excel files to another
- Next message (by thread): Copying a row from a range of Excel files to another
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2019-06-26 13:15, Cecil Westerhof wrote: > Cecil Westerhof <Cecil at decebal.nl> writes: > >> I was asked to copy a certain line from about 300 Excel lines to a new >> Excel file. That is not something I would like to do by hand and I >> immediately thought: that should be possible with Python. >> >> And it is. I was surprised how fast I could write that with openpyxl. >> My first try was not very neat, but a proof of concept. Then by >> looking better at the possibilities I could get much cleaner code. But >> I am still not completely happy. At the moment I have the following >> code: >> wb_out = Workbook() >> for filepath in filepathArr: >> current_row = [] >> wb_in = load_workbook(filepath) >> for cell in wb_in.active[src_row]: >> current_row.append(cell.value) >> wb_out.active.append(current_row) >> wb_in.close() >> wb_out.save(report_start + datetime.now().strftime('%Y-%m-%d') + report_end) >> wb_out.close() >> >> I could not find a way to copy a row from one workbook to another. >> That is why I put the row in current_row and do an append. Am I >> overlooking something, or is that really the way to do this? >> >> >> I am not used to writing GUI programs. (I have to learn tkinter also.) >> What is the best way to handle potential errors? It could go wrong on >> line 1, 4, 5, 7, 8, 9 and 10. Should I catch every exception alone, or >> all together, or something in between? > > I rewrote it like: > wb_in = None > wb_out = None > try: > wb_out = Workbook() > for filepath in filepathArr: > current_row = [] > wb_in = load_workbook(filepath) > for cell in wb_in.active[src_row]: > current_row.append(cell.value) > wb_out.active.append(current_row) > wb_in.close() > wb_out.save(report_start + datetime.now().strftime('%Y-%m-%d') + report_end) > wb_out.close() > messagebox.showinfo(info_str, created_report) > except Exception as err: > if wb_in: > wb_in.close() > if wb_out: Missing (): > wb_close > messagebox.showerror(error_str, > error_generate + '\n\n\n\n' + str(err)) > > Is it necessary to close the workbooks to circumvent a resource leak? > Is it a problem when a workbook is closed two times? If so I need to > make sure that this is not possible. > Does Workbook support the 'with' statement? If it does, then that's the best way of doing it. (Untested) with Workbook() as wb_out: for filepath in filepathArr: current_row = [] with load_workbook(filepath) as wb_in: for cell in wb_in.active[src_row]: current_row.append(cell.value) wb_out.active.append(current_row) wb_out.save(report_start + datetime.now().strftime('%Y-%m-%d') + report_end)
- Previous message (by thread): Copying a row from a range of Excel files to another
- Next message (by thread): Copying a row from a range of Excel files to another
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list