DevelopmentPayment protectionDetails
- Revisions within the package are free.
- If you do not respond within 3 days of delivery, the work is accepted automatically.
The money is reserved when you pay and released only once you accept the work.

Example result
Merging the monthly sales files of 9 shops into one Excel report
How it is run
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")
Settings, not code
The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:
[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price
A part of the code
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Reads one shop's file and gives it the report's column names."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no column for '{name}' (looked for {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.
Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.
The client and all details are made up.
About this service
Monthly exports, reports from branches, files from several suppliers: when the same data comes in dozens of CSV and Excel files, copying it into one table by hand is slow and easy to get wrong. This Python script reads every file in the folder you set, including several sheets in one workbook, lines the columns up by name, adds a column with the source file and saves one CSV or Excel file. From Standard it handles columns that are named differently in different files and keeps a log of rows it could not read. Send us two or three example files with a few rows each. You run it yourself on your computer. Excel holds up to 1,048,576 rows on a sheet, so a larger result is saved as CSV.
What is included
- What you getA ZIP archive with the Python script, a README with step-by-step instructions and, from Standard, a settings file with your folder and column names; the code is also shown on the order page.
- CSV and Excel togetherFiles of either kind in one folder, several sheets per workbook
- Columns lined upBy name, even when the order differs between files
- Source columnEach row shows which file it came from
- Encodings and separatorsCommas or semicolons, UTF-8 or older Windows encodings
- Readable codeWith comments, easy to add a column later
How it works
- 1ExamplesYou send two or three example files and say what the result should look like
- 2CodeWe write the script and the guide to running it
- 3Try itYou run it on a copy of your folder and check the totals
- 4ChangesYou ask for changes within your package and send any error message
What we need from you
Two or three of the files you merge, cut down to a few rows (change any real names or amounts if you like), roughly how many files there are and how big they get, and what the result should be: CSV or Excel, which columns in what order, and whether repeated rows should stay. If files differ (other column names, extra header lines), an example of each kind. Your system: Windows, macOS or Linux.
We will ask you:
- Which files do you merge?
- What should the result look like?
- Do the files differ?
- Where will it run?
Compare packages
| Packages | BasicMerge one kind of file$16 | StandardMerge with settings$33 | PremiumMerging tool$67 |
|---|---|---|---|
| Deadline | 1 day | 2 days | 3 days |
| Revisions | 1 | 2 | 3 |
| Code | up to 150 lines | up to 400 lines | up to 1,000 lines |
| Files of code | 1 | up to 3 | up to 8 |
| Settings file | No | Yes | Yes |
| Clear error messages and a log | No | Yes | Yes |
| Run options and a guide to running it on a schedule | No | No | Yes |
| Guide to installing and running it (README) | Yes | Yes | Yes |
| Language | Python | Python | Python |
| Order Basic | Order Standard | Order Premium |
Payment protection
You pay when you order, but the money is released only for accepted work.
- Fixed priceThe package price does not change after you pay.
- The money is reservedWhen you pay, the amount is only reserved. It is released to the service once you accept the work.
- Checked before deliveryEvery result goes through a quality check before it reaches you, and you see it on the order page before accepting it.
- Free revisionsAsk for changes within your brief as many times as the package allows.
- Acceptance after 3 daysIf within 3 days of delivery you neither accept the work nor ask for changes, it is accepted automatically. If you write in the order chat after delivery, the order waits; once we answer, we may start the 3 days again and will say so in the chat.
- Redo or a full refundIf the result does not match your brief and the revisions did not fix it, or the work takes more than twice its deadline, write in the order chat: we will redo the work or refund the payment in full.
Questions and answers
What if the files have different columns?
From Standard you list in the settings file which names mean the same column, for example Price, Cost and Sum. Columns that exist only in some files stay, with empty cells in the other rows.
Does it keep formulas and formatting?
No. It merges the values: what you see in the cells. Colours, merged cells and formulas are not carried over.
How many files can it handle?
Hundreds of files are fine on an ordinary computer. The limit is the result: more than 1,048,576 rows will not fit on one Excel sheet, so it is saved as CSV.
Do I have to send you my real files?
No. A few rows of each kind of file are enough, and you can replace names and amounts with made-up ones. The script then runs on your real files on your computer.
Did not find your answer?


