Форум сайта python.su
0
Подскажите. Не могу решить проблему: мне нужно чтобы программа создавала exel файл с именем, которое записано в переменной. Имя файла - это текущая дата. Соответственно, имя меняется каждый день. Столкнулся с тем, что либо файл создаётся с нужным именем, но в формате “.22”, либо формат будет “.xls”, но имя ему нужно присваивать вручную.
# Создание переменной с текущей датой и временем: qtime = time.strftime("%d.%m.%y") print(qtime) #Создание файла с именем переменной форматом "22": with open(qtime, 'w') as file: file.write('') # Создание exel файла вручную с именем 111.xlsx: fn = '111.xlsx' wb = load_workbook(fn) ws = wb['data'] ws['C1'] = qtime wb.save(fn) wb.close
Отредактировано BCnuHy (Дек. 12, 2022 10:49:29)
Офлайн
44
#не испульзуйте имена типа file это зарезервированое имя with open(f'{qtime}.xls', 'w') as f: f.write('')
и вставьте ссылку на его url Офлайн
857
BCnuHyОтнесись к имени файла, как к простой строке, которая не является именем файла. Просто конструируй какую-то строку с датой. А когда сконструируешь её, тогда она просто подаётся в функцию создания файла на месте имени файла.
мне нужно чтобы программа создавала exel файл с именем, которое записано в переменной. Имя файла - это текущая дата. Соответственно, имя меняется каждый день.
>>> import datetime >>> >>> date = '{:%d.%m.%Y}'.format(datetime.datetime.now()) >>> print(date) 12.12.2022 >>> >>> filename = 'file_at_{}.xls'.format(date) >>> print(filename) file_at_12.12.2022.xls >>>
Отредактировано py.user.next (Дек. 11, 2022 21:00:06)
Офлайн
0
py.user.nextСпасибо за идею. решение было очень и очень простым
Отнесись к имени файла, как к простой строке, которая не является именем файла. Просто конструируй какую-то строку с датой. А когда сконструируешь её, тогда она просто подаётся в функцию создания файла на месте имени файла.

qtime = time.strftime("%d.%m.%y") qtime = qtime + '.xlsx'
Офлайн
0
py.user.nextхотя формально задача решена, и после точки в имени файла идёт вроде-бы нужный формат “.xlsx”, но создаваемый файл остаётся в формате “.хренпоймичто” и не читается EXELем.
Отнесись к имени файла, как к простой строке, которая не является именем файла. Просто конструируй какую-то строку с датой. А когда сконструируешь её, тогда она просто подаётся в функцию создания файла на месте имени файла.
Прикреплённый файлы:
scren.jpg (30,8 KБ)
Офлайн
0
BCnuHyПроблема решена путём подключения и использования pandas
хотя формально задача решена, и после точки в имени файла идёт вроде-бы нужный формат “.xlsx”, но создаваемый файл остаётся в формате “.хренпоймичто” и не читается EXELем.
import pandas as pd df = pd.DataFrame() df.to_excel(file_name)
Офлайн
857
BCnuHyФормат XLSX - это архив zip, в котором запакованы файлы и директории, описывающие один xlsx-файл. Большинство файлов там - это файлы в формате XML, в которых размечены данные и форматы этих данных. Поэтому ты не можешь туда просто что-то записать. Сначала нужно создать дерево файлов и директорий, потом в файлы записать что-то определённым образом с определённой разметкой в формате XML, а потом надо упаковать это всё архиватором zip в один xlsx-файл и тогда его можно будет открывать в программах типа Excel и LibreOffice Calc.
создаваемый файл остаётся в формате “.хренпоймичто” и не читается EXELем.
Отредактировано py.user.next (Дек. 12, 2022 17:08:10)
Офлайн