📊 CSV/Excel Data Processing Tool
Go utility for batch processing CSV/Excel files with value replacement in specific columns.

✨ Key Features
- Excel to CSV Conversion: Automatically converts
.xlsxfiles to CSV - Value Mapping: Replaces values in specified columns using configurable rules
- Batch Processing: Processes all files in input directory
- Error Resilient: Skips unsupported files and handles conversion errors gracefully
- Structured Output: Organizes results in dedicated folders
⚙️ Prerequisites
- Go 1.16+
- Excelize library:
go get github.com/xuri/excelize/v2
🔧 Configuration (.env)
DATA_OUTPUT_DIR=data # Output directory for processed files
DOCS_DIR=docs # Input directory containing source files
COLUMN_NAME=status # Target column for value replacement
VALUES=active,inactive # Original values to match (comma-separated)
OVERWRITE=ACTIVE,INACTIVE # New values for replacement (comma-separated)
DEFAULT=UNKNOWN # Default value for unmatched entries
🚀 Installation & Usage
- Clone repository:
git clone https://github.com/yourusername/data-processor.git
cd data-processor
- Install dependencies:
go mod tidy
- Configure
.envfile:
cp .env.example .env
nano .env
- Run processor:
go run main.go
📌 Example Workflow
Input File (data.xlsx):
id,name,status
1,John,active
2,Mary,inactive
3,Peter,pending
Output File (sanitized_data.csv):
id,name,status
1,John,ACTIVE
2,Mary,INACTIVE
3,Peter,UNKNOWN
🔄 Processing Flow
🛑 Error Handling
| Error Case | Resolution |
|---|---|
| Missing required column | Process terminates with error message |
| Empty input file | File skipped, error logged |
| Invalid Excel format | Conversion error logged, file skipped |
| Permission issues | Directory creation errors logged |
🔧 Customization Options
- Add New Mappings:
# .env
VALUES=high,medium,low
OVERWRITE=CRITICAL,WARNING,INFO
- Extend File Support:
// Add new case for ODS files
case ".ods":
return convertODSToCSV(...)
-
Multiple Column Processing: Modify code to accept multiple COLUMN_NAME entries
-
Custom Fallback Logic:
// Change default value logic
mapped = strings.ToUpper(Default)
📄 License
MIT License - See LICENSE for details.
Optimizations:
- Automatic output directory creation
- Preserves original file structure
- Maintains CSV header order
- Parallel processing ready (future enhancement)
Note: For detailed logging, set zerolog level to DEBUG in code for development purposes.