首页 > 解决方案 > 当 Go 中未提供工作表/部分名称时如何从 XLS 文件中读取所有行

问题描述

我需要从.xslGo 中的文件中读取所有行。找到了这个惊人的Excelize 库,它可以让我读取和写入 XLSX/XLSM/XLTM 文件。

不幸的是,他们GetRows()需要工作表名称

// Get all the rows in the Sheet1.
rows, err := f.GetRows("Sheet1")
for _, row := range rows {
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}

就我而言,每个文件都有不同命名的工作表。那么有没有办法只获取 默认/第一个工作表的所有行?提前非常感谢!

标签: excelgoxls

解决方案


您可以使用来获取第一张工作表的f.WorkBook.Sheets.Sheet[0].Name名称,其中.fexcelize.File

package main

import (
    "fmt"
    "github.com/360EntSecGroup-Skylar/excelize"
    "log"
)

func main() {
    f, err := excelize.OpenFile("Book.xlsx")
    if err != nil {
        log.Fatalln(err)
    }
    firstSheet := f.WorkBook.Sheets.Sheet[0].Name
    fmt.Printf("'%s' is first sheet of %d sheets.\n", firstSheet, f.SheetCount)
    rows, err := f.GetRows(firstSheet)
    if err != nil {
        log.Fatalln(err)
    }
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

使用带有 2 张纸的玩具 Excel 工作簿,我得到以下输出:

'Sheet1' is first sheet of 2 sheets.
1       2

推荐阅读