2016-04-15 84 views
1

我尝试下面的代码,但我得到一个错误错误读取Excel文件在golang

“单值上下文多值cell.String()”

代码

package main 
import (
"fmt" 
"github.com/tealeg/xlsx" 
) 
func main() { 
    excelFileName := "test.xlsx" 
    xlFile, err := xlsx.OpenFile(excelFileName) 
    if err != nil { 

    } 
for _, sheet := range xlFile.Sheets { 
    for _, row := range sheet.Rows { 
      for _, cell := range row.Cells { 
      fmt.Printf("%s ", cell.String(), "123") 
    } 
      fmt.Printf("\n") 
    } 
    } 
} 
} 

回答

3

变化

for _, cell := range row.Cells { 
    fmt.Printf("%s ", cell.String(), "123") 
} 

for _, cell := range row.Cells { 
    val, _ := cell.String() 
    fmt.Printf("%s ", val) 
} 
+0

了it..reallly有帮助谢谢 –

0

您尝试使用返回多个值作为一个参数(以fmt.Printf())功能

如果你不认为你会得到任何错误,你可以只需将其分配给_并忽略它,但您确实应该准备好处理该错误。这就是为什么去强迫你使用的变量,以及为什么它不会自动放弃其他的返回值(比如从cell.String()错误)

val, err := cell.String() 
if err != nil { 
    // handle the error 
} 
fmt.Printf("%s ", val) // you had an extra arg of "123"? 
+0

我已经安装了teaeg XLS包和我已将我的文件保存在同一个文件夹“src \ github.com \ tealeg \ xlsx \ ”但是,我收到“readexcel.go:4:1:发现软件包xlsx(cell.go)和main(readexcel.go )在E:\ RI L \ Golang \ src \ github.com \ tealeg \ xlsx“ –

+0

您不需要将文件放入xlsx包中,顶部的导入将允许您访问这些文件。 –

+0

这意味着我可以把我的文件放在任何文件夹中(如GOPATH中指定的)?我今天开始了GO,所以我的问题看起来很有趣。 –