2016-11-30 3 views
0

В моей книге 6 листов. Последние 3 листа представляют собой набор формул, которые я вручную копирую вручную и вставляя значения в первые 3 листа. Я использую wb.copy_worksheet(), чтобы сделать копии и загрузить рабочую книгу как data_only = True. Однако, когда я сохраняю, формулы все ушли из-за загрузки его как data_only. Есть ли способ скопировать значения, но сохранить формулы? Листы слишком велики, чтобы проходить через ячейку.Openpyxl Сохранение формул, но копирование значений

Heres мой код:

import openpyxl 

wb = openpyxl.load_workbook("symbols.xlsx", data_only=True) 

ws = wb.get_sheet_names() 
print (ws) 


Value = ws[0:3] #set equal to first 3 sheets 


BB = ws[3:7] #set equal to last 3 sheets  

for s in range(0, len(Value)): 

    CopyBB = wb.copy_worksheet(wb[BB[s]]) #copy from bb sheet 
    CopyBB.title = Value[s] 


myorder = [6, 7, 8, 3, 4, 5, 0, 1, 2] #this is to reorder the sheets that got copied. 

wb._sheets =[wb._sheets[i] for i in myorder] 

wb.remove_sheet(wb.worksheets[8]) 
wb.remove_sheet(wb.worksheets[7]) 
wb.remove_sheet(wb.worksheets[6]) 

wb.worksheets[0].title = "Securities Values" 
wb.worksheets[1].title = "Indices Values" 
wb.worksheets[2].title = "Currencies Values" 


return wb.save("symbols.xlsx") 
+0

Вы можете показать нам весь код, включая загрузочную часть? –

+0

Отредактировано оригинал, чтобы показать полный код. –

+0

См. Https://stackoverflow.com/questions/40000170/ –

ответ

0

У меня была аналогичная проблема. Вы должны использовать = 'MVSM! A1', где MVSM - это имя листа, тогда A1 является значением ячейки. Просто используйте это при назначении значения ячейки при использовании openpyxl.

+1

wow Последний раз я даю свои 2 цента. – dman

Смежные вопросы