import time
from os import path
import sqlite3 # Библиотека для работы с sqlite, не нужна
import openpyxl
# import pyodbc Установить библеотеку и раскоментить
def fetch_all_rows():
"""
Функция, выбирающая данные из БД
"""
con = sqlite3.connect('db.sqlite3') # Подключение к базе данных, заменить на
# conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Ron\Desktop\Test\test_database.accdb;')
# где C:\Users\Ron\Desktop\Test\test_database.accdb - путь до базы
cur = con.cursor()
cur.execute('select * from accounts_useraccount') # sql-запрос для выборки. Подставить свой для правильной выборки
users = cur.fetchall() # Запись полученных данных в переменную
cur.close() # Закрытие соединения
return users
def generare_xcls_files(users):
user_set = users # получение юзеров
excel_file = openpyxl.load_workbook('template.xlsx') # Открытие шаблона, подставить свое имя
employees_sheet = excel_file['Карточка'] # Выбор активной таблицы, подставить свое имя
i = 1 # Переменная, в которую будет записываться номер цикла, нужно чисто для красивого имених xlsx файла
for user in users: # Цикл по всем данным
username = user[4] # Получение значение конкретного столбца таблицы. ВАЖНО - НУМИРАЦИЯ НАЧИНАЕТСЯ С 0
email = user[7] # Т.Е. ЧТОБЫ ВЫБРАТЬ ЗНАЧЕНИЕ ИЗ СТОЛБЦА EMAIL, КОТОРЫЙ ЯВЛЯЕТСЯ 8 ПО СЧЕТУ В ТАБЛИЦЕ, НУЖНО УКАЗАТЬ 7
employees_sheet['B1'] = username #Запись полученного значения в конкретную ячейку
employees_sheet['B2'] = email
filename = f'{i}_{username}_{email}.xlsx' # Генерация имени файла, состоящего из нескольких значений (номер цикла и т.д.).
filename = path.join('files', filename) # Добавление к имени файла пути до папки files, в одном со скриптом каталоге. ВАЖНО - папку нужно создать вручную.
i+=1 # увеличение переменной на 1
excel_file.save(filename=filename) # cохранение нового файла
if __name__ == '__main__':
users = fetch_all_rows() # Запуск функций
generare_xcls_files(users)