读取Excel的数据,转换成Golang中的数据类型
这个案例主要是读取excel中单元格的数据
打开指定的文件(TMP_01.xlsx),读取文件内容,并输出为go的数据格式
- 打开已存在的文件
func OpenFile(filename string, opt ...Options) (*File, error)
- 按行读取所有的数据
func (f *File) GetRows(sheet string) ([][]string, error)
- 按行读取数据,用于循环读取每一行
func (f *File) Rows(sheet string) (*Rows, error)
func (rows *Rows) Next() bool
func (rows *Rows) Columns() ([]string, error)
rows,err := file.Rows("Sheet1")
if err != nil {
fmt.Println(err)
return
}
for rows.Next(){
s,err := rows.Columns
if err != nil {
fmt.Println(err)
return
}
fmt.Println(s) // 字符串切片,一行的所有数据
}
-
按行读取数据,用于循环读取每一行 与rows方法类似
func (f *File) Cols(sheet string) (*Cols, error)
func (cols *Cols) Next() bool
func (cols *Cols) Rows() ([]string, error)
-
指定单元格的值
func (f *File) GetCellValue(sheet, axis string) (string, error)
-
指定单元格的公式
func (f *File) GetCellFormula(sheet, axis string) (string, error)
-
指定单元格的链接
HYPERLINK 创建的链接只能通过获取公式得到
func (f *File) GetCellHyperLink(sheet, axis string) (bool, string, error)
- 获取合并单元格
func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
- 获取合并单元格的开始单元格
func (m *MergeCell) GetStartAxis() string
- 合并单元格的结束单元格
func (m *MergeCell) GetEndAxis() string
- 合并单元格的值
func (m *MergeCell) GetCellValue() string
合并单元格范围内的所有单元格的值都是一样的,也可以直接使用 GetCellValue 获取值
代码:main.go
package main
import (
"fmt"
"strconv"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("../excel_files/TMP_01.xlsx")
if err != nil {
fmt.Println("打开文件失败,错误信息:", err)
return
}
// 指定sheet页数据
fmt.Println("step1")
rows, err := f.GetRows("基础的表格")
if err != nil {
fmt.Println("获取行信息失败,错误信息:", err)
return
}
// 输出为切片类型
fmt.Println(rows)
// 注意:输出的是切片,当前行有多少列数据切片的长度就是几,就是说每一行的数据个数与整个表格的没有关系
fmt.Printf("按行获取的数据类型是:%T\n", rows)
// 输出为map
var users []map[string]interface{
}
// 表头数据
var columns []string = rows[0]
for _, row := range rows[1:] {
user