Cделать подключение к вновь созданной таблице и записать туда все данные
Немного расскажу как код работает (полностью его скидывать нет смысла, наверно). Есть zip архивы, в них есть файлы pdf и xml. Распаковываю в несуществующую директорию (она создается при распаковке) pdf файлы и переименовываю их, получая наименование из xml файла. Директория папок выглядит так: "F:\python_1\minimushestvo\PDF\plans\городской округ г. Выкса"
. Помимо Выксы есть еще 50 других папок, и в каждой папке мне нужно сделать excel, потом записать туда данные из xml файла.
Вот часть кода, сначала укажу полностью, потом опишу его:
for path in Path(r'C:\Users\shirshov\Downloads').rglob('*.zip'):
with zipfile.ZipFile(path, mode="r") as archive:
with archive.open([_ for _ in archive.namelist() if _.endswith(find_xml)][0]) as line: # Находим все xml в архиве
soup = BeautifulSoup(line.read(), features="xml")
cad_n = '_'.join((soup.select_one('object common_data cad_number').text).split(':'))
file_newname_pdf = cad_n + '_' + find_pdf
if soup.select_one('room_record location_in_build level plans') is not None:
cad_number = (':'.join((soup.select_one('object common_data cad_number').text).split(':')[:-1]))
if Name_MO()[0] == 'городской округ г. Выкса':
plans_pdf = r'F:\python_1\minimushestvo\PDF\plans\городской округ г. Выкса'
extract()
file_xlsx = os.path.join(r'minimushestvo\PDF\plans\городской округ г. Выкса', dest_filename)
if not os.path.isfile('list.xlsx'):
wb = openpyxl.Workbook()
wb.save(file_xlsx)
list_ = openpyxl.load_workbook(file_xlsx)
list_sheet = list_.active
list_sheet['A1'] = 'Кадастровый номер'
list_sheet['B1'] = 'Адрес'
list_sheet['C1'] = 'Площадь кв.м.'
list_sheet['D1'] = 'Инвентарный номер'
list_sheet['E1'] = 'Наименование'
list_sheet['F1'] = 'Этажность'
list_sheet['G1'] = 'Кадастровый номер родителя'
for r in dataframe_to_rows(data_pd(), index=False, header=False):
list_sheet.append(r)
list_.save(file_xlsx)
В строке - if Name_MO()[0] == 'городской округ г. Выкса':
, есть функция - Name_MO()[0]
, которая сравнивает переменную - "cad_number"
с БД и делит по району.
Далее, если есть такой район, создается директория и распаковывается туда pdf через функцию extract()
.
Далее, в строке - if not os.path.isfile('list.xlsx'):
идет проверка, есть ли в этой директории list.xlsx
и, если нет, он создается.
Далее, в строке - list_ = openpyxl.load_workbook(file_xlsx)
идет подключение к этому файлу. В функции data_pd()
идет запись фрейма и сохранения в файл. Вот тут-то проблема и возникла. Из за то что в цикле идет подключение к таблице - list_ = openpyxl.load_workbook(file_xlsx)
, записывается последняя запись (почему на это грешу, специально, один район, выводил эти строки за цикл и все прекрасно записывается (если таблица в директории существует), но если выводить за пределы цикла и удалить всю директорию, выдает ошибку (не найдена табл в директории), по этому не хочу убирать эти строки из цикла. Вот про какие строки имеется введу:
list_ = openpyxl.load_workbook(file_xlsx)
list_sheet = list_.active
list_sheet['A1'] = 'Кадастровый номер'
list_sheet['B1'] = 'Адрес'
list_sheet['C1'] = 'Площадь кв.м.'
list_sheet['D1'] = 'Инвентарный номер'
list_sheet['E1'] = 'Наименование'
list_sheet['F1'] = 'Этажность'
list_sheet['G1'] = 'Кадастровый номер родителя'
Строка - if Name_MO()[0] == 'городской округ г. Выкса':
повторяется еще 50 раз и все что ниже нее тоже повторяется. Помогите пожалуйста, как сделать подключение к вновь созданной таблице и записать туда все данные?