Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2013 13:46:31

Deocrit
Зарегистрирован: 2013-06-20
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Добавление данных в таблицы Excel

Доброго всем времени суток!
Прошу помочь разобраться.
Суть задачи такова: есть log.txt содержащий в себе данные по последнему бэкапу базы данных. Ежедневно “специально обученный человек” открывает лог, копирует оттуда строчку типа “ггггммддччммсс” и вставляет скопированные данные в журнал Excel, где уже формулы заполняют другие поля по этим данным.
Чтобы этот СОЧ не занимался всякой фигнёй, было принято решение написания скриптика для автоматической записи из логов в журнал, но в ходе выполнения возникла проблема - как найти последнюю пустую строку и записать в неё все необходимы данные не перевернув?
Запутался совсем в этих чтениях и записях, не смог самостоятельно разобраться в соответствии с теми примерами, что удалось найти в интернетах. Помогите пожалуйста.

Вот что получилось:

# -*- coding: utf-8 -*-
import re, xlrd, xlwt
from xlutils.copy import copy
	
md = open('c:/Tmp/test/log.txt', 'r')																
	
def Seach(md):
	reline = re.compile(r'^201\d[0-1]\d[0-3]\d')
	for line in md:
		m = reline.match(line)
		if m:
			return line
	
genr = Seach(md)
	
readbook = xlrd.open_workbook(r"C:/Tmp/test/jour2.xls", on_demand=True, formatting_info=True) 
readsheet = readbook.sheet_by_index(0)
writebook = copy(readbook)
writesheet = writebook.get_sheet(0)																	
	
for ii in range(readsheet.nrows):
	if readsheet.cell_value(ii,0) is "":
		writesheet.write(ii, 0, "Yum!")
	
writebook.save('c:/Tmp/test/jour2.xls')

Расскажите пожалуйста, в чём ошибся?

Отредактировано Deocrit (Июнь 20, 2013 13:49:04)

Офлайн

#2 Июнь 21, 2013 12:52:42

Deocrit
Зарегистрирован: 2013-06-20
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Добавление данных в таблицы Excel

Всем спасибо! Разобрался! XD

Оставлю готовый код, может кому-нибудь из таких же новичков когда-нибудь поможет.

import re, xlrd, xlwt
from xlutils.copy import copy
md = open('c:/Tmp/test/log.txt', 'r') # Путь к логам
# Функция, создающая фильтр и применяющая его для поиска файле лога
def Seach(md):
	reline = re.compile(r'^201\d[0-1]\d[0-3]\d') 
	for line in md:
		m = reline.match(line)
		if m:
			return line
genr = Seach(md)
# Открываем эксельник, в который будет производиться запись, делаем его копию для редактирования
readbook = xlrd.open_workbook(r"C:/Tmp/test/jour2.xls", on_demand=True, formatting_info=True)
readsheet = readbook.sheet_by_index(0)	# Указание на индекс листа книги.
writebook = copy(readbook)
writesheet = writebook.get_sheet(0) 		# Указание на индекс листа книги.
# Устанавливаем перенос по словам, выравнивание
alignment = xlwt.Alignment()
alignment.wrap = 1
alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
# Устанавливаем шрифт
font = xlwt.Font()
font.name = 'Arial Cyr'
font.bold = True
# Устанавливаем границы
borders = xlwt.Borders()
borders.left = xlwt.Borders.THIN # May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
# Создаём стиль с нашими установками
style = xlwt.XFStyle()
style.font = font
style.alignment = alignment
style.borders = borders
# Задаём цикл поиска первой пустой строки и записи в неё нужных нам данных
for ii in range(readsheet.nrows): # по всем ФОРМАТИРОВАННЫМ строкам. Я просто с самого начала выделил нужные мне столбцы и обрамил их. =)
	if readsheet.cell_type(ii, 0) in (xlrd.XL_CELL_EMPTY, xlrd.XL_CELL_BLANK):
		print writesheet.write(ii, 0, int(readsheet.cell_value(ii - 1, 0))+1, style)
		writesheet.write(ii, 1, readsheet.cell_value(ii - 1, 1), style)
		writesheet.write(ii, 2, str(genr[6:8])+"."+str(genr[4:6])+"."+str(genr[:4]), style)
		writesheet.write(ii, 3, str(genr[8:10])+":"+str(genr[10:12])+":"+str(genr[12:14]), style)
		writesheet.write(ii, 4, readsheet.cell_value(ii - 1, 4), style)
		writesheet.write(ii, 5, readsheet.cell_value(ii - 1, 5), style)
		writesheet.write(ii, 6, readsheet.cell_value(ii - 5, 6), style)
		writesheet.write(ii, 7, readsheet.cell_value(ii - 1, 7), style)
		writesheet.write(ii, 8, readsheet.cell_value(ii - 1, 8), style)
		break
md.close()							# Закрываем открытый файл лог
readbook.release_resources() 			# Освобождаем наш эксельник от чтения
writebook.save('c:/Tmp/test/jour2.xls') 	# Перезаписываем наш эксельник

Офлайн

#3 Янв. 12, 2017 11:13:07

shpalbl4
Зарегистрирован: 2017-01-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление данных в таблицы Excel

Спасибо добрый человек!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version