https://github.com/tom-draper/xlsx-pipeline
Automate your local .xlsx files.
https://github.com/tom-draper/xlsx-pipeline
automate automate-excel automation background-service dotnet excel excel-automation excel-scheduler libreoffice pipeline schedule-excel spreadsheet spreadsheet-manipulation xlsx xlsx-automation xlsx-files xlsx-spreadsheet
Last synced: about 2 months ago
JSON representation
Automate your local .xlsx files.
- Host: GitHub
- URL: https://github.com/tom-draper/xlsx-pipeline
- Owner: tom-draper
- License: gpl-3.0
- Created: 2025-07-15T16:16:35.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-04-03T10:56:40.000Z (2 months ago)
- Last Synced: 2026-04-03T15:59:49.631Z (2 months ago)
- Topics: automate, automate-excel, automation, background-service, dotnet, excel, excel-automation, excel-scheduler, libreoffice, pipeline, schedule-excel, spreadsheet, spreadsheet-manipulation, xlsx, xlsx-automation, xlsx-files, xlsx-spreadsheet
- Language: C#
- Homepage: https://xlsxpipeline.com
- Size: 16.1 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

XLSX Pipeline runs as a background service processing automated workflows (pipelines) on your sheets.
Pipelines like the one below are defined using a flexible DML in JSON.
```json
{
"pipelineName": "Generate Monthly Sales Summary",
"trigger": {
"type": "OnChange",
"path": "C:\\Sales\\Monthly\\SalesData.xlsx"
},
"actions": [
{
"type": "CopySheet",
"sourceSheetName": "Template",
"newSheetName": "Summary"
},
{
"type": "SetCellValue",
"sheetName": "Summary",
"cellAddress": "A1",
"value": "Monthly Summary - {month} {year}"
},
{
"type": "ApplyFormula",
"sheetName": "Summary",
"cellAddress": "B2",
"formula": "=SUM(Sales!B2:D2)"
},
{
"type": "CopyFile",
"destinationPath": "C:\\Sales\\Summaries\\",
"fileName": "Summary_{month}_{year}.xlsx"
}
]
}
```
You can have any number of pipelines running at once, just add a new file to the `Pipelines/` directory.
```text
XLSXPipeline.exe
Pipelines/
├── CleanReport.json
├── TransferSalesData.json
├── ApplyAnalytics.json
└── UpdateLeads.json
```
Pipelines can have:
- scheduled triggers (e.g., 6pm every day), or
- file watcher triggers (e.g., when a new file is created in a directory),
followed by a series of actions that will execute sequentially.
Check out the docs to help build your own pipelines, or browse the [examples](/pipeline/XLSXPipeline/Examples).
## Getting Started
No Excel or spreadsheet software required.
Download the latest release from GitHub, or clone the repo and build locally:
```bash
git clone https://github.com/tom-draper/xlsx-pipeline.git
dotnet publish pipeline/XLSXPipeline -c Release --self-contained -p:PublishSingleFile=true
```
### Windows
Create a new service with PowerShell.
```powershell
New-Service -Name "XLSXPipeline" -BinaryPathName "C:\Path\To\XLSXPipeline.exe" -DisplayName "XLSX Pipeline" -StartupType Automatic
Start-Service XLSXPipeline
```
Or using `sc`:
```bash
sc create XLSXPipeline binPath="C:\Path\To\XLSXPipeline.exe"
```
### Linux
Create a new file: `/etc/systemd/system/xlsx-pipeline.service`
```
[Unit]
Description=XLSX Pipeline Service
After=network.target
[Service]
WorkingDirectory=/opt/XLSXPipeline
ExecStart=/opt/XLSXPipeline/XLSXPipeline
Restart=always
# Optional: Set user/group
# User=youruser
# Group=yourgroup
Environment=DOTNET_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
```
Restart the service after making any changes to a pipeline files within `/Pipeline` to reload.
## Contributions
Contributions, issues and feature requests are welcome.
- Fork it (https://github.com/tom-draper/xlsx-pipeline)
- Create your feature branch (`git checkout -b my-new-feature`)
- Commit your changes (`git commit -am 'Add some feature'`)
- Push to the branch (`git push origin my-new-feature`)
- Create a new Pull Request