Files
Implementations-of-Probabil…/timesheet/reportUpdating.py
2024-09-02 11:14:03 -04:00

64 lines
1.9 KiB
Python

import subprocess
import csv
import pandas as pd
def compile_latex(latex_file):
try:
# Run the pdflatex command to compile the LaTeX file
subprocess.run(['pdflatex', latex_file], check=True)
print(f'Successfully compiled {latex_file}')
except subprocess.CalledProcessError as e:
print(f'Error compiling {latex_file}: {e}')
def timesheet2Tex():
with open("timesheet.tex", 'r') as f:
lines = f.readlines()
timesheetStart = findIn(lines, "% OPEN Timesheet")
timesheetStop = findIn(lines, "% CLOSE Timesheet")
timetable = csv2Table("timesheet.csv")
df = pd.read_csv("timesheet.csv")
df = df.groupby("Type").sum()
timetable += "\\noindent "
for timetype in df.iloc:
timetable += f"Hours for {timetype.name}: {timetype['Duration (Hours)']}\\\\\n"
timetable += "\\textbf{Total Hours: " + str(sum(df['Duration (Hours)'].values)) + "}\\\\\n"
with open("timesheet.tex", 'w') as f:
f.write(''.join(lines[:timesheetStart+1]) + timetable + ''.join(lines[timesheetStop:]))
def csv2Table(inFile):
with open(inFile, 'r') as f:
reader = csv.reader(f)
rows = list(reader)
out = "\\begin{table}[h!]\n\\centering\n"
out += "\\begin{tabular}[t]{|" + " c | c | c | c | p{6cm} |}\n"
out += "\\hline\n"
for row in rows:
# Escape special LaTeX characters
row = [cell.replace('&', '\\&') for cell in row]
out += " & ".join(row) + " \\\\\n"
out += "\\hline\n"
out += "\\end{tabular}\n\\end{table}\n"
return out
def findIn(arr, target):
for i, s in enumerate(arr):
if target in s:
return i
return -1
if __name__ == "__main__":
timesheet2Tex()
compile_latex('timesheet.tex')
# latex makes all kinds of files :(
subprocess.run(['rm -f *.aux *.log *.fdb_latexmk *.fls *.gz'], check=True, shell=True)