2015-04-23 5 views
1

Я пытаюсь активировать несколько листов excel и писать на оба листа в обеих книгах с помощью python и openpyxl. Я могу загрузить вторую книгу f, но я не могу добавить ячейки G2 моей второй книги со строкой ReconАктивировать второй рабочий лист с openpyxl

from openpyxl import Workbook, load_workbook 

filename = 'sda_2015.xlsx' 

wb = Workbook() 
ws = wb.active 

ws['G1'] = 'Path' 
ws.title = 'Main' 

adf = "Dirty Securities 04222015.xlsx" 
f = "F:\\ana\\xlmacro\\" + adf 

wb2 = load_workbook(f) 
""" 
wb22 = Workbook(wb2) 
ws = wb22.active 

ws['G1'] = "Recon2" 
ws.title = 'Main2' 
""" 
print wb2.get_sheet_names() 

wb.save(filename) 

Я закомментированного код, который разбивается

Update Я настроил мой код с нижеследующим ответом. Значение в ячейке H1 записывается на wb2 в столбце H, но по какой-либо причине столбец скрыт. Я скорректировал столбец в другие столбцы, но все же я видел, что код скрывает несколько столбцов. Есть также вхождения, когда код выполняется и название ws2, как Main21 но кодированное значение Main2

from openpyxl import Workbook, load_workbook 

filename = 'sda_2015.xlsx' 

wb1 = Workbook() 
ws1 = wb1.active 

ws1['G1'] = 'Path' 
ws1.title = 'Main' 

adf = "Dirty Securities 04222015.xlsx" 
f = "F:\\ana\\xlmacro\\" + adf 

wb2 = load_workbook(f) 

ws2 = wb2.active 

ws2['H1'] = 'Recon2' 
ws2.title = 'Main2' 

print wb2.get_sheet_names() 

wb1.save(filename) 
wb2.save(f) 

ответ

1

Я испытал то же самое со скрытыми ячейками. В конце концов я распаковал файл Excel и посмотрел на необработанный XML, чтобы узнать, что не все столбцы имеют размерность для ширины. Те, у кого нет ширины, были в Excel.

Быстрое исправление сделать что-то вроде этого ...

for col in 'ABCDEFG': 
    if not worksheet.column_dimensions[col].width: 
     worksheet.column_dimensions[col].width = 10 
+0

Я не вижу отношения к исходному вопросу, и в любом случае, если ширина отсутствует для column_dimension, применяется по умолчанию. –

2

Если у вас есть две рабочие книги открыты, WB1 и WB2, вам также нужны разные имена для различных рабочих листов: ws1 = wb1.active и ws2 = wb2.active.

Если вы работаете с файлом с макросами, вам необходимо установить флаг keep_vba на True при его открытии, чтобы сохранить макросы.

+0

по какой-то причине столбцами скрыты, я обновил свой вопрос – phillipsK

+0

Извините, но я не понимаю вопрос. Вероятно, список рассылки имеет больше смысла. –

+0

список рассылки ?? Скопируйте и вставьте код обновления сверху и выполните (заменив книгу Excel на свой комп) и позвольте мне знать, если после выполнения кода вы увидите значение «Recon2» в книге 2? Каждый раз, когда я запускаю код, я вижу значение, но по какой-то причине колонка H скрыта. – phillipsK