Найти - Пользователи
Полная версия: Перейти на новую строку в Excel
Начало » Python для новичков » Перейти на новую строку в Excel
1
korad
Добрый день!
Помогите с решением задачи, не понимаю как сделать цикл, чтобы проверял наличие записей в строке и если есть, переходил на следующую и добавлял туда свежие данные из базы.
То есть, каждый раз, когда выполняется скрипт, создавалась новая строка ниже с данными, сохраняя предыдущие записи.

 from datetime import datetime
import xlwt
import cx_Oracle
 
dsn_tns = cx_Oracle.makedsn('host', 'port', 'sid')
db = cx_Oracle.connect('test', 'test', dsn_tns)
 
cursor = db.cursor()
cursor.execute('select count(c.DATE) from test_1 c where c.DATE > TRUNC(SYSDATE)')
 
for sql_row in cursor:
    print(sql_row[0])
 
book = xlwt.Workbook()
sheet = book.add_sheet('Test')
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY'
 
sheet.write(0, 0, datetime.now(), style)
sheet.write(0, 1, sql_row[0])
 
book.save('sql-test.xls')

И еще вопрос, в 20 строке ругается на sql_row - this inspection warns about local variable referenced before assignment, если сделать так, то ошибка пропадает, на сколько правильное это решение? Как сделать правильно?

 client_count = None
 
for sql_row in cursor:
    if client_count is None:
        client_count = sql_row[0]
    print(sql_row[0])
 
sheet.write(0, 1, client_count)

Заранее спасибо за любую помощь!
korad
Сделал так, работает, но sql_row всеравно подсвечивается, как исправить?
 from xlutils.copy import copy
from datetime import datetime
import cx_Oracle
import xlwt
import xlrd
def get_clients_count():
    cursor = db.cursor()
    cursor.execute('select count(c.DATE) from test_1 c where c.DATE > TRUNC(SYSDATE)')
    for sql_row in cursor:
        print(sql_row[0])
    return sql_row[0]
dsn_tns = cx_Oracle.makedsn('host', 'port', 'sid')
db = cx_Oracle.connect('test', 'test', dsn_tns)
clients_count = get_clients_count()
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY'
wb = xlrd.open_workbook('sql-test.xls', formatting_info=True)
r_sheet = wb.sheet_by_index(0)
r = r_sheet.nrows
book = copy(wb)
sheet = book.get_sheet(0)
sheet.write(r, 0, datetime.now(), style)
sheet.write(r, 1, clients_count)
book.save('sql-test.xls')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB