【问题标题】:Golang excel file readingGolang excel文件读取
【发布时间】:2017-03-04 09:01:53
【问题描述】:

我正在使用tealeg xlsx 库来读取一个excel 文件https://github.com/tealeg/xlsx。他们在这里有文档https://godoc.org/github.com/tealeg/。如果我通过本地目录调用OpenFile(),它工作得非常好,但我想使用http.Request.FormFile() 返回类型为multipart.Form 的对象。我如何使用这个文件被 tealeg 包读取?

Tealeg 的 OpenReaderAt() 看起来像是我应该使用的东西,但它是多部分的。从http.Request.FormFile() 返回的表单对象返回一个文件接口,但我不确定如何访问 readerAt 对象? https://golang.org/pkg/mime/multipart/#File

【问题讨论】:

    标签: excel go reader


    【解决方案1】:

    func OpenReaderAt(r io.ReaderAt, size int64) (*File, error)

    xlsx.OpenReaderAt 接受一个io.ReaderAt 接口,multipart.File 也实现了io.ReaderAt

    所以你可以直接传给xlsx.OpenReaderAt

    var (
    file multipart.File
    size int64
    err error
    )
    
    file, _,err = req.FormFile("key")
    // size = // Calculate size
    xlsx.OpenReaderAt(file,size)
    

    【讨论】:

    • 我怎么知道 File 是 io.ReaderAt 接口的? ReadAt 接口需要实现“ReadAt()”函数godoc.org/io#ReaderAt。但是...文件(从 req.FormFIle 返回)似乎没有实现任何功能:golang.org/pkg/mime/multipart/#File
    • multipart.File是一个嵌入其他接口的接口,其中一个是io.ReaderAt。您可以在您发布的link 中看到。
    • @user3125693 答案中还有什么要澄清的吗?
    • 不,你回答得很好。我实际上并不知道您可以将一个界面嵌入到另一个界面中。谢谢!
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多