首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用URL链接在Excelize上打开Excel文件?

如何使用URL链接在Excelize上打开Excel文件?
EN

Stack Overflow用户
提问于 2022-09-23 11:56:06
回答 1查看 113关注 0票数 1

我试图解析一个Excel文件并使用Excelize处理它。我只有一个URL链接,可以用来访问该文件。

对于我的情况,我使用上传到Dropbox的文件进行测试。来自dropbox的url类似于这个www.dropbox.com/s/t537135761/filename.xlsx,但是当我尝试使用这个链接时,Excelize抛出了这个错误:

代码语言:javascript
复制
open: www.dropbox.com/s/t537135761/filename.xlsx: no such file or directory

该文件本身已经向公众开放。我可以在匿名模式下浏览它,这意味着它并不是因为访问受限。它在URL上有扩展名文件,所以我假设URL接触到了可由Excelize解析的实际文件

我不确定问题是在Dropbox本身还是在Excelize上,但这只是我可以用来测试代码的云存储。

谁能告诉我如何使用精益打开文件使用URL链接?我试着搜索另一个函数,但什么也找不到。

这是我的测试代码(简化)。

代码语言:javascript
复制
package main

func main() {

var urlLink = "www.dropbox.com/s/t537135761/filename.xlsx"

exlz, err := excelize.OpenFile(urlLink)
if err != {
  fmt.Println(err)
  return
}

defer func() {
  if err = exlz.Close(); err != nil {
    fmt.Println(err)
  }
}

  return
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-23 18:35:00

这是解决办法,下面的解释。

代码语言:javascript
复制
package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"

    excelize "github.com/xuri/excelize/v2"
)

func main() {

    // note here the 1 at the end instead of 0 in your original link
    openURL("https://www.dropbox.com/s/8ngoie6spyga8k1/for%20testing.xlsx?dl=1")
}

func openURL(urlLink string) {
    data, err := getData(urlLink)
    if err != nil {
        panic(err)
    }

    // Open the ZIP file with Excelize
    exlz, err := excelize.OpenReader(bytes.NewReader(data))
    if err != nil {
        fmt.Println("Reader", err)
        return
    }

    lst := exlz.GetSheetList()
    if len(lst) == 0 {
        fmt.Println("Empty document")
        return
    }

    fmt.Println("Sheet list:")
    for _, s := range lst {
        fmt.Println(s)
    }

    defer func() {
        if err = exlz.Close(); err != nil {
            fmt.Println(err)
        }
    }()

    fmt.Println("Done")

}

func getData(url string) ([]byte, error) {

    r, err := http.Get(url)
    if err != nil {
        panic(err)
    }

    defer r.Body.Close()

    return ioutil.ReadAll(r.Body)
}

对于URL,您需要首先实际获取数据。

第二个问题是,您使用的Dropbox链接并不返回实际的Excel,而是返回一个包含Excel的HTML文件。

您需要在最后更改dl=1。这将给出实际的Excel文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73827326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档