excel

module
v0.0.0-...-9560950 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 25, 2026 License: MIT

README

excel

Go 语言编写的轻量级、零依赖 Excel 解析库 (参考 xlrd 设计)。

专为高性能读取 .xls (Excel 97-2003) 和 .xlsx (Excel 2007+) 文件而设计,提供统一且简洁的 API。

特性

  • 零依赖:纯 Go 实现,无 CGO。
  • 双格式支持:同时支持旧版二进制 .xls (BIFF8) 和现代 XML .xlsx 格式。
  • 轻量高效:专注于数据读取与提取,剔除写入和复杂格式保留功能,速度更快。
  • 鲁棒性强:能够处理各种现实场景中的文件,包括对共享字符串和日期的宽松解析。
  • 类型安全:提供统一的单元格值接口,自动处理字符串、整数、浮点数、布尔值和日期。

安装

go get github.com/jpzz/excel

使用指南

读取文件
package main

import (
	"fmt"
	"log"

	"github.com/jpzz/excel/xl"
)

func main() {
	// 打开任意 .xls 或 .xlsx 文件
	wb, err := xl.OpenFile("data.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	defer wb.Close()

	// 遍历所有工作表 (Sheet)
	for _, sheet := range wb.Sheets {
		fmt.Printf("工作表: %s\n", sheet.Name)

		// 解析工作表数据
		if err := sheet.Parse(); err != nil {
			log.Printf("解析工作表 %s 失败: %v", sheet.Name, err)
			continue
		}

		// 访问行和单元格
		for i, row := range sheet.Rows {
			fmt.Printf("第 %d 行: ", i)
			for _, cell := range row.Cells {
				// 自动识别数据类型 (string, float64, bool, time.Time 等)
				fmt.Printf("%v\t", cell.Value)
			}
			fmt.Println()
		}
	}
}

数据类型支持

解析器会自动识别并转换单元格内容为相应的 Go 类型:

  • 文本:支持共享字符串 (Shared Strings) 和内联字符串。
  • 数字:自动处理整数和浮点数。
  • 日期:自动转换为 time.Time (支持 1900 和 1904 日期系统)。
  • 布尔值true / false
  • 错误:保留为错误字符串以便调试。

许可证

本项目采用 MIT 许可证。

Directories

Path Synopsis
cmd
xls/2csv command
xls/run command
xl
cfb

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL