numStyle
This commit is contained in:
parent
eaea327077
commit
bb07b2528e
@ -4,18 +4,24 @@ import xlwt
|
|||||||
|
|
||||||
|
|
||||||
class MySheet:
|
class MySheet:
|
||||||
|
dateStyle = xlwt.XFStyle()
|
||||||
|
dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss'
|
||||||
|
numStyle = xlwt.XFStyle()
|
||||||
|
numStyle.num_format_str = '#,##0'
|
||||||
|
|
||||||
def __init__(self, sheet):
|
def __init__(self, sheet):
|
||||||
self.sheet = sheet
|
self.sheet = sheet
|
||||||
self.rowCnt = 0
|
self.rowCnt = 0
|
||||||
self.colCnt = 0
|
self.colCnt = 0
|
||||||
self.widthFactor = 268
|
self.widthFactor = 268
|
||||||
self.dateStyle = xlwt.XFStyle()
|
|
||||||
self.dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss'
|
|
||||||
|
|
||||||
|
|
||||||
def write(self, txt, style=None):
|
def write(self, txt, style=None):
|
||||||
if isinstance(txt, datetime.datetime):
|
if isinstance(txt, datetime.datetime):
|
||||||
self.sheet.row(self.rowCnt).write(self.colCnt, txt, self.dateStyle)
|
self.sheet.row(self.rowCnt).write(self.colCnt, txt, MySheet.dateStyle)
|
||||||
|
elif style is not None:
|
||||||
|
self.sheet.row(self.rowCnt).write(self.colCnt, txt, style)
|
||||||
else:
|
else:
|
||||||
self.sheet.row(self.rowCnt).write(self.colCnt, txt)
|
self.sheet.row(self.rowCnt).write(self.colCnt, txt)
|
||||||
l = len(unicode(txt)) * self.widthFactor
|
l = len(unicode(txt)) * self.widthFactor
|
||||||
@ -66,6 +72,7 @@ SELECT d.description, d.address,
|
|||||||
cur.execute(query, (datetime.datetime(1970, 1, 1), datetime.datetime(2100, 12, 31)))
|
cur.execute(query, (datetime.datetime(1970, 1, 1), datetime.datetime(2100, 12, 31)))
|
||||||
|
|
||||||
devices = {}
|
devices = {}
|
||||||
|
sheets = {}
|
||||||
|
|
||||||
for (deviceName, deviceAddress, dataItem, timestamp, value, id) in cur:
|
for (deviceName, deviceAddress, dataItem, timestamp, value, id) in cur:
|
||||||
value = int(value)
|
value = int(value)
|
||||||
@ -77,16 +84,20 @@ SELECT d.description, d.address,
|
|||||||
'last': {'timestamp': timestamp, 'value': value}}
|
'last': {'timestamp': timestamp, 'value': value}}
|
||||||
else:
|
else:
|
||||||
devices[key]['last'] = {'timestamp': timestamp, 'value': value}
|
devices[key]['last'] = {'timestamp': timestamp, 'value': value}
|
||||||
|
if not sheets.has_key(dataItem):
|
||||||
|
sheets[dataItem] = dataItem
|
||||||
|
|
||||||
secondsPerMonth = datetime.timedelta(30).total_seconds()
|
secondsPerMonth = datetime.timedelta(30).total_seconds()
|
||||||
secondsPerWeek = datetime.timedelta(7).total_seconds()
|
secondsPerWeek = datetime.timedelta(7).total_seconds()
|
||||||
|
|
||||||
xls = xlwt.Workbook()
|
xls = xlwt.Workbook()
|
||||||
mySheet = MySheet(xls.add_sheet('Sheet 1'))
|
|
||||||
|
for sheetName in sheets.keys():
|
||||||
|
mySheet = MySheet(xls.add_sheet(sheetName))
|
||||||
|
sheets[sheetName] = mySheet
|
||||||
mySheet.writeFirstFirst('Name')
|
mySheet.writeFirstFirst('Name')
|
||||||
mySheet.writeSameNext('Address')
|
mySheet.writeSameNext('Address')
|
||||||
mySheet.writeSameNext('DataItem')
|
# mySheet.writeSameNext('DataItem')
|
||||||
mySheet.writeSameNext('First Sample Date')
|
mySheet.writeSameNext('First Sample Date')
|
||||||
mySheet.writeSameNext('First Sample Value')
|
mySheet.writeSameNext('First Sample Value')
|
||||||
mySheet.writeSameNext('Last Sample Date')
|
mySheet.writeSameNext('Last Sample Date')
|
||||||
@ -99,24 +110,25 @@ SELECT d.description, d.address,
|
|||||||
|
|
||||||
|
|
||||||
for device in devices.values():
|
for device in devices.values():
|
||||||
|
mySheet = sheets[device['dataItem']]
|
||||||
|
|
||||||
print("Device: %s, %s, %s" % (device['name'], device['address'], device['dataItem']))
|
print("Device: %s, %s, %s" % (device['name'], device['address'], device['dataItem']))
|
||||||
mySheet.writeNextFirst(device['name'])
|
mySheet.writeNextFirst(device['name'])
|
||||||
mySheet.writeSameNext(device['address'])
|
mySheet.writeSameNext(device['address'])
|
||||||
mySheet.writeSameNext(device['dataItem'])
|
# mySheet.writeSameNext(device['dataItem'])
|
||||||
|
|
||||||
print(" First: %s, %s" % (device['first']['timestamp'], device['first']['value']))
|
print(" First: %s, %s" % (device['first']['timestamp'], device['first']['value']))
|
||||||
mySheet.writeSameNext(device['first']['timestamp'])
|
mySheet.writeSameNext(device['first']['timestamp'])
|
||||||
mySheet.writeSameNext(device['first']['value'])
|
mySheet.writeSameNext(device['first']['value'], style=MySheet.numStyle)
|
||||||
|
|
||||||
print(" Last: %s, %s" % (device['last']['timestamp'], device['last']['value']))
|
print(" Last: %s, %s" % (device['last']['timestamp'], device['last']['value']))
|
||||||
mySheet.writeSameNext(device['last']['timestamp'])
|
mySheet.writeSameNext(device['last']['timestamp'])
|
||||||
mySheet.writeSameNext(device['last']['value'])
|
mySheet.writeSameNext(device['last']['value'], style=MySheet.numStyle)
|
||||||
|
|
||||||
deltaTime = device['last']['timestamp'] - device['first']['timestamp']
|
deltaTime = device['last']['timestamp'] - device['first']['timestamp']
|
||||||
deltaValue = device['last']['value'] - device['first']['value']
|
deltaValue = device['last']['value'] - device['first']['value']
|
||||||
print(" Diff: %s, %s" % (deltaTime, deltaValue))
|
print(" Diff: %s, %s" % (deltaTime, deltaValue))
|
||||||
mySheet.writeSameNext(deltaValue)
|
mySheet.writeSameNext(deltaValue, style=MySheet.numStyle)
|
||||||
|
|
||||||
factorMonth = secondsPerMonth / deltaTime.total_seconds()
|
factorMonth = secondsPerMonth / deltaTime.total_seconds()
|
||||||
mySheet.writeSameNext(factorMonth)
|
mySheet.writeSameNext(factorMonth)
|
||||||
@ -124,14 +136,16 @@ SELECT d.description, d.address,
|
|||||||
mySheet.writeSameNext(factorWeek)
|
mySheet.writeSameNext(factorWeek)
|
||||||
|
|
||||||
print(" Month average/forecast: %s" % (int(deltaValue * factorMonth)))
|
print(" Month average/forecast: %s" % (int(deltaValue * factorMonth)))
|
||||||
mySheet.writeSameNext(int(deltaValue * factorMonth))
|
mySheet.writeSameNext(int(deltaValue * factorMonth), style=MySheet.numStyle)
|
||||||
|
|
||||||
print(" Week average/forecast: %s" % (int(deltaValue * factorWeek)))
|
print(" Week average/forecast: %s" % (int(deltaValue * factorWeek)))
|
||||||
mySheet.writeSameNext(int(deltaValue * factorWeek))
|
mySheet.writeSameNext(int(deltaValue * factorWeek), style=MySheet.numStyle)
|
||||||
|
|
||||||
|
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
print("Failure when using database: %s" % (err))
|
print("Failure when using database: %s" % (err))
|
||||||
|
except Exception as err:
|
||||||
|
print("Failure: %s" % (err))
|
||||||
finally:
|
finally:
|
||||||
if xls is not None:
|
if xls is not None:
|
||||||
xls.save('deviceStats.xls')
|
xls.save('deviceStats.xls')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user