Copying a row from a range of Excel files to another
Cecil Westerhof
Cecil at decebal.nl
Fri Jun 28 04:44:31 EDT 2019
MRAB <python at mrabarnett.plus.com> writes:
> On 2019-06-26 22:14, Cecil Westerhof wrote:
>> MRAB <python at mrabarnett.plus.com> writes:
>>
>>> 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)
>>
>> It seems not. I get AttributeError.
>>
> You didn't say which line.
I made a minimalist program to show it:
#!/usr/bin/env python3
from openpyxl import Workbook
with Workbook() as wb_out:
print('In loop')
print('After loop')
This results in:
Traceback (most recent call last):
File "./test.py", line 7, in <module>
with Workbook() as wb_out:
AttributeError: __exit__
> Anyway, if Workbooks are closed using a method called "close", you can
> wrap them in a "closing" context manager:
That seems to work. I changed it to:
#!/usr/bin/env python3
from contextlib import closing
from datetime import datetime
from openpyxl import Workbook
with closing(Workbook()) as wb_out:
print('In loop')
wb_out.save('testing_' + datetime.now().strftime('%Y-%m-%d') + '.xlsx')
print('After loop')
And I see:
In loop
After loop
And a testing Excel file.
Thanks.
--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof
More information about the Python-list
mailing list