# easyWord **Repository Path**: netbycom/easyWord ## Basic Information - **Project Name**: easyWord - **Description**: 一个用Go语言开发的纯原生Word文档处理组件,支持创建、解析和操作Word文档(.docx格式),无需依赖第三方付费组件。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easyWord - Go语言原生Word文档处理组件 一个用Go语言开发的纯原生Word文档处理组件,支持创建、解析和操作Word文档(.docx格式),无需依赖第三方付费组件。 ## 功能特性 ### ✅ 文档创建 - 支持创建符合Office Open XML (OOXML) 标准的Word文档 - 支持段落文本、样式设置(粗体、斜体、颜色、字体大小等) - 支持表格创建(多行多列、边框样式) - 支持图片插入(PNG、JPG格式) ### ✅ 文档解析 - 完整解析Word文档结构和内容 - 提取段落文本和样式信息 - 解析表格数据 - 提取图片文件 - 获取文档元数据 ### ✅ 实用工具 - 验证文档格式有效性 - 提取纯文本内容 - 获取文档统计信息 - 错误处理和异常检测 ## 项目结构 ``` wordControl/ ├── docx/ │ ├── types.go # 数据类型定义 │ ├── creator.go # 文档创建功能 │ └── parser.go # 文档解析功能 ├── examples/ │ ├── basic_example.go # 基础使用示例 │ ├── table_example.go # 表格处理示例 │ └── parse_example.go # 文档解析示例 ├── go.mod # Go模块定义 ├── main.go # 主程序入口 └── README.md # 项目说明 ``` ## 快速开始 ### 1. 安装依赖 ```bash # 无需额外依赖,仅使用Go标准库 go version >= 1.21 ``` ### 2. 运行示例 ```bash # 方法1: 使用主程序 go run main.go # 方法2: 直接运行示例 cd examples go run basic_example.go go run table_example.go go run parse_example.go example.docx ``` ### 3. 基本使用 #### 创建文档 ```go package main import ( "log" "wordControl/docx" ) func main() { doc := &docx.SimpleDocument{ Title: "我的文档", Author: "作者名", Paragraphs: []docx.SimpleParagraph{ { Text: "这是标题", Bold: true, Size: 28, Align: "center", }, { Text: "这是正文内容", Size: 24, }, }, Tables: []docx.SimpleTable{ { Rows: [][]string{ {"姓名", "年龄"}, {"张三", "25"}, }, }, }, } err := docx.Create(doc, "output.docx") if err != nil { log.Fatal(err) } } ``` #### 解析文档 ```go package main import ( "fmt" "log" "wordControl/docx" ) func main() { doc, err := docx.Parse("example.docx") if err != nil { log.Fatal(err) } fmt.Printf("标题: %s\n", doc.Title) fmt.Printf("作者: %s\n", doc.Author) for i, para := range doc.Paragraphs { fmt.Printf("段落 %d: %s\n", i+1, para.Text) } for i, table := range doc.Tables { fmt.Printf("表格 %d:\n", i+1) for j, row := range table.Rows { fmt.Printf(" 行 %d: %v\n", j+1, row) } } } ``` ## API 参考 ### 创建相关 - `docx.Create(doc *SimpleDocument, outputPath string) error` - 创建Word文档 ### 解析相关 - `docx.Parse(filePath string) (*SimpleDocument, error)` - 解析Word文档基本内容 - `docx.ParseWithImages(filePath string) (*SimpleDocument, error)` - 解析Word文档并包含图片 - `docx.ExtractText(filePath string) (string, error)` - 提取纯文本内容 ### 工具函数 - `docx.ValidateDocx(filePath string) error` - 验证文档格式有效性 - `docx.GetDocumentInfo(filePath string) (map[string]interface{}, error)` - 获取文档基本信息 ### 数据类型 - `SimpleDocument` - 简化的文档结构 - `SimpleParagraph` - 段落定义 - `SimpleTable` - 表格定义 - `Image` - 图片信息 ## 特性说明 ### 样式支持 - **粗体**: `Bold: true` - **斜体**: `Italic: true` - **字体大小**: `Size: 24` (单位: 磅) - **字体颜色**: `Color: "FF0000"` (十六进制) - **字体名称**: `Font: "Arial"` - **对齐方式**: `Align: "center"` (left/center/right) ### 表格支持 - 自动创建表格边框 - 支持多行多列 - 自动调整列宽 - 支持单元格文本内容 ### 图片支持 - PNG格式图片 - JPG/JPEG格式图片 - 自动处理图片关系 - 支持图片数据提取 ## 示例输出 运行基础示例会生成以下文档: ``` example.docx 内容: ================ 这是标题 ================ 这是第一段普通文本,用于演示基本的段落功能。 这是第二段文本,包含粗体和斜体的混合样式。 ================ 表格内容: 姓名 | 年龄 | 职业 张三 | 28 | 工程师 李四 | 32 | 设计师 王五 | 25 | 产品经理 ================ ``` ## 兼容性 - ✅ Microsoft Word 2007+ - ✅ LibreOffice Writer - ✅ WPS Office - ✅ Google Docs (导入) - ✅ 其他支持OOXML格式的办公软件 ## 注意事项 1. 生成的文档严格遵循Office Open XML标准 2. 图片文件会自动优化和压缩 3. 大型文档处理时注意内存使用 4. 支持的图片格式: PNG, JPG/JPEG 5. 表格列数建议不超过20列以保持兼容性 ## 开发说明 本项目仅使用Go标准库,无外部依赖: - `archive/zip` - 处理DOCX的ZIP结构 - `encoding/xml` - 解析和生成XML - `io` - 文件操作 - `os` - 系统调用 - `fmt` - 格式化输出 - `log` - 日志记录 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 更新日志 ### v1.0.0 (2024-01-01) - ✅ 实现基础文档创建和解析功能 - ✅ 支持段落和样式设置 - ✅ 支持表格创建和解析 - ✅ 支持图片插入和提取 - ✅ 提供完整的示例和文档