使用golang读取超大Excel可以使用第三方库"github.com/360EntSecGroup-Skylar/excelize"。它支持读取XLSX格式的Excel文件。 读取Excel文件的方式如下: ``` package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize" ) func main() { f, err := excelize.OpenFile("./test.xlsx") if err != nil { fmt.Println(err) return } // 读取指定sheet中的数据 rows := f.GetRows("Sheet1") for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "\t") } fmt.Println() } } ``` 随机取20W行数据可以使用rand包来实现。在读取Excel文件之后,可以使用rand.Perm函数来生成随机数组,然后根据随机数组中的索引来取出数据。 代码示例如下: ``` package main import ( "fmt" "github.com/360EntSecGroup-Skylar/excelize" "math/rand" "time" ) func main() { f, err := excelize.OpenFile("./test.xlsx") if err != nil { fmt.Println(err) return } // 读取指定sheet中的数据 rows := f.GetRows("Sheet1") rand.Seed(time.Now().UnixNano()) // 随机取20W行数据 numRows := len(rows) randIndex := rand.Perm(numRows)[:20000] for _, index := range randIndex { row := rows[index] for _, colCell := range row { fmt.Print(colCell, "\t") } fmt.Println() } } ``` 这里虽然给出了一个例子,但是对于100列100W行的数据来说,用上述方式读取性能可能会有影响,建议考虑到数