mirror of
https://github.com/coko7/expense-report.git
synced 2026-09-17 13:55:37 +00:00
🧾 Generate Excel reports from PDF invoices
bash
csv
invoice
invoice-pdf
invoice2data
jq
json
openpyxl
pdftotext
python
templates
venv-python
workbook
xlsx
- Shell 88.1%
- Python 11.9%
| templates | ||
| .env | ||
| .gitignore | ||
| create-pdf-summary.sh | ||
| create_xlsx.py | ||
| generate-report.sh | ||
| hook-xp-files.sh | ||
| invoice2json.sh | ||
| LICENSE | ||
| README.md | ||
| setup.sh | ||
🧾 expense-report
Generate Excel reports from PDF invoices.
Requirements
- python/pip (pyenv, 3.11.8)
- fd, jq, gum
- poppler-utils (pdftotext, pdfseparate, pdfunite, pdfinfo)
- invoice2data, dateparser, openpyxl (installed into the venv by
setup.sh)
Requires a .env file with EMP_NAME and EMP_NUM variables.
Usage
$ ./setup.sh # setup the python venv
$ ./invoice2json.sh # use invoice2data to extract data from PDFs into data/parsed_data.json
$ ./generate-report.sh # convert generated JSON into csv and insert it in the XLSX template
Invoice folders
Put PDFs under data/invoices/:
mine/→ personal expense, reimbursed (cost_num = employee number)company/→ direct company expense (cost_num = 0)- anywhere else → cost_num = -1
create-pdf-summary.sh
Merges one page from every invoice PDF into a single attachment PDF.
$ ./create-pdf-summary.sh <date> <employee_id> [first|last]
date,employee_id— used in the output filenametarget/pdf-extracts/all-invoices_<employee_id>_<date>.pdffirst|last— which page to pull from each PDF (defaultfirst)
hook-xp-files.sh
Moves files prefixed sigxp from ~/Downloads into data/invoices/mine/ — used when batch-downloading invoices from the employer's expense portal.