Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2020, 14:28   #1
1way2god
Пользователь
 
Регистрация: 28.01.2020
Сообщений: 13
По умолчанию Добавление данных из SQL запроса в эксель на конкретную страницу, без удаления старых данных

Есть вот такой код:
Данные из SQL запроса вставляются в созданный на рабочий стол эксель файл под названием Reestr.xlsx.
Вопрос:
Как сделать так, чтобы те же данные можно было записать, в уже существующий файл эксель, на конкретную страницу, при том, чтобы не удалялись старые данные с других страниц.
К примеру существующий файл эксель будет называться Test.xlsx, там будет 3 страницы(1,2,3) и нам нужно будет вставить данные на вторую страницу.
Код:
import pandas as pd
import win32com.client as wincl
from pandas import ExcelWriter
from pandas import ExcelFile
import subprocess
from tkinter.filedialog import askopenfilename
import pymysql.cursors
import csv                                                                               # Запись в файл
print('Выберите файл с данными от Heidi SQL')
file = askopenfilename()
f = open(file)

id = f.readline()
id1 = id[:-1]
passw = f.readline()
connection = pymysql.connect(host='hostname',user=str(id1),password=str(passw),db='какая то таблица',charset='utf8mb4')
print("SQL connect successfull")
print('Введите первый день отчетного периода (в формате гггг-мм-дд)')
d1 = input()
print('Введите первый день следующего перида (в формате гггг-мм-дд)')
d2 = input()
try:
    with connection.cursor() as cursor:
        sql ="select o.gds, \
        concat(o.first_name, \" \", o.last_name) as \"ИФ\", \
        t.number, t.external_id, \
        concat(o.departure_city_name, \" - \", o.arrival_city_name) as \"Маршрут\", \
        o.cdate \
        from busorder.order_backoffice o \
        left join busorder.ticket t on t.order_id=o.id \
        left join buspricing.estimate es on es.id = t.estimate_id \
        left join busgateline.rm_paymentgate_object po on po.order_id = o.id \
        left join busboxplat.rm_paymentgate_object pob on pob.order_id = o.id \
        left join busorder.passenger p on p.order_id = o.id and p.id = t.passenger_id \
        where o.cdate BETWEEN " + "'"+ str(d1) + "'" +" " + "AND" + " "+ "'" + str(d2) + "' \
        and o.gds='[\"...\"]'" 
        
        df = pd.read_sql(sql,connection)
        writer = pd.ExcelWriter('C:\\Users\\username1\\Desktop\\Reestr.xlsx')
        df.to_excel(writer, ' Реестр')
finally:
    connection.close()
writer.save()
print('Downloading TUTU db success')

Последний раз редактировалось 1way2god; 29.01.2020 в 14:31.
1way2god вне форума Ответить с цитированием
Старый 29.01.2020, 14:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

Читать документацию не пробовали? Указать режим а (добавление) и шит_нейм.
p51x вне форума Ответить с цитированием
Старый 29.01.2020, 14:59   #3
1way2god
Пользователь
 
Регистрация: 28.01.2020
Сообщений: 13
По умолчанию

p51x, Немного туплю, так как совсем не моя область, не могли бы вы показать пожалуйста на конкретном примере(как в первом сообщении) как будет выглядеть строка
1way2god вне форума Ответить с цитированием
Старый 29.01.2020, 15:02   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

https://pandas.pydata.org/pandas-doc...as.ExcelWriter
https://pandas.pydata.org/pandas-doc...Frame.to_excel
p51x вне форума Ответить с цитированием
Старый 29.01.2020, 16:01   #5
1way2god
Пользователь
 
Регистрация: 28.01.2020
Сообщений: 13
По умолчанию

p51x,
Код:
writer = pd.ExcelWriter('C:\\Users\\username1\\Desktop\\List_Microsoft_Excel.xlsx',engine="openpyxl", mode='a')
        df.to_excel(writer, sheet_name='Лист1')
Он видит, что в файле есть лист с таким названием и создает другой(добавляя 1), вместо того, чтобы записать в лист с указанным названием
1way2god вне форума Ответить с цитированием
Старый 30.01.2020, 12:11   #6
1way2god
Пользователь
 
Регистрация: 28.01.2020
Сообщений: 13
По умолчанию

p51x, Так и не смогу найти решения, чтобы он не создавал новый лист, а записывал без изменений в уже существующий лист, две ссылки, что вы скинули именно создают новые листы.
1way2god вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление данных и формул в Гугл таблицу, после данных от формы Neptun74 Microsoft Office Excel 5 18.03.2019 16:53
Правка .htaccess под конкретную страницу. Alexx87 PHP 0 16.02.2017 11:08
добавление данных в таблицу из запроса Tessi123 Microsoft Office Access 7 09.06.2012 21:33
база данных. добавление и удаление данных midiss Общие вопросы Delphi 3 09.12.2011 13:07
Переход на конкретную страницу beginner JavaScript, Ajax 3 09.07.2008 20:19