-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
63 lines (52 loc) · 2.27 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pandas as pd
import glob
from fpdf import FPDF
from pathlib import Path
filepaths = glob.glob("invoices/*.xlsx")
for filepath in filepaths:
pdf = FPDF(orientation= "P", unit= "mm", format= "A4")
pdf.add_page()
filename = Path(filepath).stem
invoice_nr, date = filename.split("-")
#invoice no
pdf.set_font(family= "Times", style= "B", size=16)
pdf.cell(w= 50, h= 8, txt=f"Invoice nr.{invoice_nr}", ln=1)
#date
pdf.set_font(family="Times", style="B", size=16)
pdf.cell(w=50, h=8, txt=f"Date: {date}", ln=1)
df = pd.read_excel(filepath, sheet_name="Sheet 1")
# Add a header
columns = [item.replace("_", " ").title() for item in df.columns]
pdf.set_font(family= "Times", style= "B", size=10)
pdf.set_text_color(80, 80, 80)
pdf.cell(w=30, h=8, txt= columns[0], border=1)
pdf.cell(w=65, h=8, txt=columns[1], border=1)
pdf.cell(w=40, h=8, txt=columns[2], border=1)
pdf.cell(w=25, h=8, txt=columns[3], border=1)
pdf.cell(w=25, h=8, txt=columns[4], border=1, ln=1)
#Add rows to table
for index, row in df.iterrows():
pdf.set_font(family="Times", size=10)
pdf.set_text_color(80, 80, 80)
pdf.cell(w=30, h=8, txt=str(row["product_id"]), border=1)
pdf.cell(w=65, h=8, txt=str(row["product_name"]), border=1)
pdf.cell(w=40, h=8, txt=str(row["amount_purchased"]), border=1)
pdf.cell(w=25, h=8, txt=str(row["price_per_unit"]), border=1)
pdf.cell(w=25, h=8, txt=str(row["total_price"]), border=1, ln=1)
# Add total sum table
total_sum = df["total_price"].sum()
pdf.set_font(family="Times", size=10)
pdf.set_text_color(80, 80, 80)
pdf.cell(w=30, h=8, txt="", border=1)
pdf.cell(w=65, h=8, txt="", border=1)
pdf.cell(w=40, h=8, txt="", border=1)
pdf.cell(w=25, h=8, txt="", border=1)
pdf.cell(w=25, h=8, txt="", border=1, ln=1)
# Add total sum sentence
pdf.set_font(family="Times", size=10, style="B")
pdf.cell(w=30, h=8, txt=f"The total price is {total_sum}", ln=1)
# Add company name and logo
pdf.set_font(family="Times", size=14, style="B")
pdf.cell(w=25, h=8, txt=f"PythonHow")
pdf.image("pythonhow.png", w=10)
pdf.output(f"PDF's/{filename}.pdf")