Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2019 16:04:00

rokagor
Зарегистрирован: 2019-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

openpyxl записать формулу

Помогите начинающему, пожалуйста.
Задача. Создать книгу Excel и в нее вставить формулы на внешние книги из папки, типа:
='C:\Мои документы\Тест\Лист1'!$A$1
Файл создал, перечень файлов в папке получил, а вот как формулу вставить да с переменными не знаю
кусок кода:

 scan_dir='C:\Мои документы\Тест'
for files in os.listdir(scan_dir): 
    if os.path.isfile(os.path.join(scan_dir, files)):
       if fnmatch.fnmatch(files, mask):         
           ws_a.cell(i,2).value = scan_dir, "[" , files, "]Лист1'!$A$1"
выдает ошибку ValueError: Cannot convert

Офлайн

#2 Авг. 7, 2019 19:46:56

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

openpyxl записать формулу

 scan_dir='C:\Мои документы\Тест'
это у вас работает?
вроде должно быть как то так
 scan_dir='C:\\Мои документы\\Тест'
или так (но это не точно, не знаю как это в 3 версии python. у меня … я, тоже учимся, мы, этому, питону, вот)
 scan_dir=r'C:\Мои документы\Тест'



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 7, 2019 20:02:27)

Офлайн

#3 Авг. 8, 2019 09:10:40

rokagor
Зарегистрирован: 2019-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

openpyxl записать формулу

AD0DE412
scan_dir='C:\Мои документы\Тест'
это у вас работает?
вроде должно быть как то так
Не работает код в utf8, а папки в cp1251. У меня название папки хранится в ini файле в 1251, это я для общей картины нарисовал.
В общем я разобрался в чем было дело, неправильно передавал формулу.
Было ws_a.cell(i,2).value = scan_dir, "Лист1'!$A$1“
а надо ws_a.cell(i,2).value = scan_dir + ”\Лист1'!$A$1"
Но это еще не все, нужно как-то эти формулы заставить тянуть значения из внешних файлов иначе при открытии созданного файла вместо значений получаю #ССЫЛКА!. И лишь после нажатия F2 на ячейке получаю значение из файла.
Как-то надо полученную книгу заставить обновить связи.

Офлайн

#4 Авг. 8, 2019 09:31:42

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

openpyxl записать формулу

Не работает код в utf8, а папки в cp1251.
>>
тянуть значения из внешних файлов
мне кажется однозначно так или иначе нужно открывать исходные файлы что бы получить нужные вам значения
зы на хабре смотрели



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 8, 2019 09:35:02)

Офлайн

#5 Авг. 8, 2019 13:45:16

rokagor
Зарегистрирован: 2019-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

openpyxl записать формулу

AD0DE412
мне кажется однозначно так или иначе нужно открывать исходные файлы что бы получить нужные вам значения
зы на хабре смотрели

Перерыл интернет, оказывается openpyxl не умеет пересчитывать формулы, для этих целей нужны библиотеки, работающие с Excel через API. Нашел xlwings, делает то что мне надо, но только при этом открывает сам Excel.

Офлайн

#6 Авг. 8, 2019 18:38:46

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

openpyxl записать формулу

rokagor
Перерыл интернет … xlwings, делает то что мне надо, но только при этом открывает сам Excel.
я то же! ну такое кнешно, но
https://pypi.org/project/vb2py/
http://vb2py.sourceforge.net/



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 8, 2019 18:40:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version