Initial commit
This commit is contained in:
101
Reporty.py
Normal file
101
Reporty.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import os
|
||||
import fdb
|
||||
import csv,time,pandas as pd
|
||||
import openpyxl
|
||||
|
||||
|
||||
PathToSaveCSV=r"z:\NextCloudOrdinace\Reporty"
|
||||
timestr = time.strftime("%Y-%m-%d %H-%M-%S ")
|
||||
CSVname="Pacienti.xlsx"
|
||||
# PathToSaveCSV=r"//tower/tempspeed"
|
||||
|
||||
con = fdb.connect(
|
||||
host='localhost', database=r'm:\MEDICUS\data\medicus.FDB',
|
||||
user='sysdba', password='masterkey',charset='WIN1250')
|
||||
|
||||
# Create a Cursor object that operates in the context of Connection con:
|
||||
cur = con.cursor()
|
||||
|
||||
# import openpyxl module
|
||||
import openpyxl
|
||||
import xlwings as xw
|
||||
wb = openpyxl.Workbook()
|
||||
sheet = wb.active
|
||||
# wb.save("sample.xlsx")
|
||||
|
||||
|
||||
|
||||
#Načtení receptů
|
||||
cur.execute("""select
|
||||
kar.rodcis,
|
||||
TRIM(kar.prijmeni) ||' '|| substring(kar.jmeno from 1 for 1) ||'.' as jmeno,
|
||||
recept.datum,
|
||||
TRIM(recept.lek) ||' '|| trim(recept.dop) as lek,
|
||||
recept.expori AS Poc,
|
||||
CASE
|
||||
WHEN recept.opakovani is null THEN 1
|
||||
ELSE recept.opakovani
|
||||
END AS OP,
|
||||
recept.uhrada,
|
||||
recept.dsig,
|
||||
recept.NOTIFIKACE_KONTAKT as notifikace,
|
||||
recept_epodani.erp,
|
||||
recept_epodani.vystavitel_jmeno,
|
||||
recept.atc,
|
||||
recept.CENAPOJ,
|
||||
recept.cenapac
|
||||
from recept LEFT Join RECEPT_EPODANI on recept.id_epodani=recept_epodani.id
|
||||
LEFT join kar on recept.idpac=kar.idpac
|
||||
order by datum desc,erp desc"""
|
||||
)
|
||||
nacteno=cur.fetchall()
|
||||
print(len(nacteno))
|
||||
|
||||
wb.create_sheet('Recepty',0)
|
||||
sheet=wb['Recepty']
|
||||
|
||||
sheet.title="Recepty"
|
||||
sheet.append(["Rodné číslo","Jméno","Datum vystavení","Název leku","Poč.","Op.","Úhr.","Da signa","Notifikace","eRECEPT","Vystavil","ATC","Cena pojišťovna","Cena pacient"])
|
||||
|
||||
for row in nacteno:
|
||||
try:
|
||||
sheet.append(row)
|
||||
except:
|
||||
continue
|
||||
|
||||
wb.save(os.path.join(PathToSaveCSV ,timestr+CSVname))
|
||||
|
||||
|
||||
# autofilter
|
||||
for ws in wb.worksheets:
|
||||
# Get the maximum number of rows and columns
|
||||
max_row = ws.max_row
|
||||
max_column = ws.max_column
|
||||
ws.auto_filter.ref = f"A1:{openpyxl.utils.get_column_letter(max_column)}{max_row}"
|
||||
# ws.auto_filter.ref = ws.dimensions
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
wb.save(os.path.join(PathToSaveCSV ,timestr+CSVname))
|
||||
|
||||
|
||||
# Tento modul je pouze na autofit jednotlivych sloupcu na vsech listech workbooku
|
||||
file = os.path.join(PathToSaveCSV ,timestr+CSVname)
|
||||
with xw.App(visible=False) as app:
|
||||
wb = xw.Book(file)
|
||||
for sheet in range(len(wb.sheets)):
|
||||
ws = wb.sheets[sheet]
|
||||
ws.autofit()
|
||||
|
||||
# centrování receptů
|
||||
sheet = wb.sheets['Recepty']
|
||||
for sloupec in ["C:C", "E:E", "F:F", "G:G", "I:I", "M:M", "N:N"]:
|
||||
sheet.range(sloupec).api.HorizontalAlignment = 3 # 3 = Center
|
||||
|
||||
|
||||
wb.save()
|
||||
wb.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user