# gxm **Repository Path**: liumou_site/gxm ## Basic Information - **Project Name**: gxm - **Description**: 使用`go`编写的表格管理模块 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-01 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GXM - Go Excel 管理库 [![Go Version](https://img.shields.io/badge/Go-1.20+-blue.svg)](https://golang.org/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Excelize](https://img.shields.io/badge/Powered%20by-Excelize%20v2.7.0-orange.svg)](https://github.com/xuri/excelize) #### 📋 介绍 GXM 是一个简单易用的 Go 语言 Excel 文件管理库,基于强大的 [Excelize](https://github.com/xuri/excelize) 库开发。提供了简洁的 API 接口,支持 Excel 文件的读取和写入操作,让表格数据处理变得更加简单高效。 #### 🏗️ 软件架构 - **核心依赖**: [Excelize v2.7.0](https://github.com/xuri/excelize) - 优秀的 Go 语言 Excel 库 - **日志支持**: [logger v1.2.0](https://gitee.com/liumou_site/logger) - 结构化日志记录 - **Go 版本**: 1.20+ - **架构模式**: 面向对象,提供读写分离的 API 设计 - **性能优化**: 支持大数据量处理,内存使用优化 #### 🚀 功能特性 - ✅ **读取 Excel**: 支持读取整个工作表数据 - ✅ **数据截取**: 支持按行截取指定数据 - ✅ **列级读取**: 支持读取指定列、列范围和多列数据 - ✅ **写入 Excel**: 支持创建新文件和修改现有文件 - ✅ **行级操作**: 支持按行写入数据 - ✅ **列级写入**: 支持按列写入数据 - ✅ **错误处理**: 完善的错误处理机制 - ✅ **链式调用**: 支持链式 API 调用 - ✅ **高性能**: 优化的读写性能,支持大数据处理 #### 📦 安装教程 ```bash go get gitee.com/liumou_site/gxm ``` #### 💡 使用说明 ##### 读取 Excel 文件 ```go package main import ( "fmt" "gitee.com/liumou_site/gxm" ) func main() { // 创建读取实例 reader := gxm.NewRead("example.xlsx") // 读取所有数据 reader.ReadAll() if reader.Err != nil { fmt.Println("读取错误:", reader.Err) return } // 输出所有数据 fmt.Println("所有数据:", reader.Data) // 获取第一行数据 reader.CutLine(0) fmt.Println("第一行:", reader.DataRow) // 读取指定列数据(如第A列) reader.ReadCol(0) fmt.Println("第一列:", reader.DataRow) // 读取列范围数据(如A-C列) reader.ReadColRange(0, 2) fmt.Println("A-C列数据:", reader.DataR) // 读取多列数据(如A、C、E列) reader.ReadCols([]int{0, 2, 4}) fmt.Println("A、C、E列数据:", reader.DataR) } ``` ##### 写入 Excel 文件 ```go package main import ( "gitee.com/liumou_site/gxm" ) func main() { // 创建写入实例 writer := gxm.NewWrite("output.xlsx") // 写入单列数据 names := []interface{}{"姓名", "张三", "李四", "王五"} writer.Write(0, names) // 写入A列 // 写入另一列数据 ages := []interface{}{"年龄", 25, 30, 28} writer.Write(1, ages) // 写入B列 // 写入行数据 dataRow := []interface{}{1, "苹果", 100, 5.99} writer.WriteRow(2, dataRow) // 写入第3行 if writer.Err != nil { println("写入错误:", writer.Err.Error()) } else { println("写入成功!") } } ``` ##### 更多示例 ```go // 创建新文件并写入多行数据 writer := gxm.NewWrite("data.xlsx") // 写入列数据 headers := []interface{}{"ID", "产品", "数量", "价格"} writer.Write(0, headers) // 写入A列 // 写入行数据 dataRow := []interface{}{1, "苹果", 100, 5.99} writer.WriteRow(1, dataRow) // 写入第2行 // 链式操作写入多列数据 writer.Write(1, []interface{}{"苹果", "香蕉", "橙子"}) // B列 .Write(2, []interface{}{100, 200, 150}) // C列 .WriteRow(2, []interface{}{2, "香蕉", 200, 3.99}) // 第3行 // 读取现有文件 reader := gxm.NewRead("data.xlsx") reader.ReadAll() for i, row := range reader.Data { fmt.Printf("第%d行: %v\n", i+1, row) } // 高效读取指定列(避免读取全部数据) reader.ReadAll().ReadCol(0) // 只读取第一列 if reader.Err == nil { fmt.Println("第一列数据:", reader.DataRow) } ``` #### 🧪 测试 项目包含完整的测试用例: ```bash # 运行所有测试 go test -v # 运行读取功能测试 go test -v ./... -run TestApiRead # 运行写入功能测试 go test -v ./... -run TestApiWrite # 运行基准测试 go test -bench=. -benchmem ``` 测试文件: - `read_test.go` - 读取功能测试(包含列读取测试) - `write_test.go` - 写入功能测试 - `base_test.go` - 基础功能测试 #### 🤝 参与贡献 1. **Fork** 本仓库 2. 创建您的功能分支 (`git checkout -b feature/AmazingFeature`) 3. **提交**您的更改 (`git commit -m 'Add some AmazingFeature'`) 4. **推送**到分支 (`git push origin feature/AmazingFeature`) 5. 创建一个 **Pull Request** #### 📄 API 文档 ##### 读取 API | 方法 | 描述 | 返回值 | |------|------|--------| | `NewRead(filename)` | 创建读取实例 | `ApiRead` | | `ReadAll()` | 读取所有数据 | `*ApiRead` | | `CutLine(line)` | 截取指定行数据 | `*ApiRead` | | `ReadCol(col)` | 读取指定列数据 | `*ApiRead` | | `ReadColRange(startCol, endCol)` | 读取列范围数据 | `*ApiRead` | | `ReadCols(cols)` | 读取多列数据(非连续) | `*ApiRead` | ##### 写入 API | 方法 | 描述 | 返回值 | |------|------|--------| | `NewWrite(filename)` | 创建写入实例 | `ApiWrite` | | `Write(col, data)` | 写入单列数据 | `*ApiWrite` | | `WriteRow(row, data)` | 写入单行数据 | `*ApiWrite` | | `Version()` | 获取版本号 | `string` | #### 📝 许可证 本项目基于 [MIT](LICENSE) 许可证开源。 #### 🔗 相关链接 - [Excelize 官方文档](https://xuri.me/excelize/) - [Go 官方文档](https://golang.org/doc/) - [项目仓库](https://gitee.com/liumou_site/gxm) --- ⭐ 如果这个项目对您有帮助,请给个 Star 支持一下!