ExcelDB is a lightweight Go package that provides a simple interface for reading, writing, and manipulating Excel files (.xlsx) as if they were a basic database. It supports CRUD operations, dynamic column handling, and sheet management using the powerful excelize library.
- 🔍 Query (Select) rows based on conditions
- ➕ Insert new rows
- ✏️ Update rows matching a query
- ❌ Delete rows based on criteria
- ➕➖ Add/Remove columns
- 📄 Manage multiple sheets
- 💾 Automatically creates an Excel file if it doesn’t exist
go get github.com/whitespaca/exceldb(Replace with your actual module path)
Also install the dependency:
go get github.com/xuri/excelize/v2package main
import (
"fmt"
"log"
"github.com/whitespaca/exceldb"
)
func main() {
db, err := exceldb.NewExcelDatabase("data.xlsx", "Users")
if err != nil {
log.Fatal(err)
}
// Insert data
err = db.Insert(exceldb.Row{"Name": "Alice", "Age": 30})
if err != nil {
log.Fatal(err)
}
// Query data
rows, err := db.Select(exceldb.Row{"Name": "Alice"})
if err != nil {
log.Println("Not found")
} else {
fmt.Println("Found:", rows)
}
// Update data
err = db.Update(exceldb.Row{"Name": "Alice"}, exceldb.Row{"Age": 31})
if err != nil {
log.Fatal(err)
}
// Delete data
err = db.Delete(exceldb.Row{"Name": "Alice"})
if err != nil {
log.Fatal(err)
}
}db, err := exceldb.NewExcelDatabase(filePath string, sheetName string)err := db.Insert(Row{"Name": "Bob", "Age": 25})rows, err := db.Select(Row{"Name": "Bob"})err := db.Update(Row{"Name": "Bob"}, Row{"Age": 26})err := db.Delete(Row{"Name": "Bob"})err := db.AddColumn("Email", "")err := db.RemoveColumn("Email")sheetNames, err := db.GetAllSheetNames()
exists, err := db.IsSheetExists("Users")exceldb.go– Core logic of the ExcelDBRow– Type alias formap[string]interface{}to represent each data entry
- Go 1.23.5+
- Excel
.xlsxfiles (handled viagithub.com/xuri/excelize/v2)
This project is licensed under the MIT License. See the LICENSE file for details.