起飞就起飞

golang使用xlsx不当会引发panic

Posted on By baixiao

引用https://github.com/tealeg/xlsx,使用不当会引发panic。当xlsx表格含有空行时,xlsx返回的行数和真实有效行数会造成困扰,如下图,23073之后的行都为无效数据,如果尝试获取cell数据会panic。

bad_xlsx

package main

import (
	"third/xlsx"
	"fmt"
)


func main() {
	xlFile, err := xlsx.OpenFile("/Users/baixiao/Go/src/test/12.29-女性.xlsx")
	if err != nil {
		fmt.Printf("OpenFile error: %v", err)
		return
	}

	fmt.Println(len(xlFile.Sheets[0].Rows))
	for _, row := range xlFile.Sheets[0].Rows {
		var userId string
		userId, err = row.Cells[0].String()
		if err != nil {
			fmt.Printf("cell %s string error: %v", userId, err)
			continue
		}
		//fmt.Println(i, userId)
	}
}

xlsx_panic

解决方法为获取cell数据前判断长度