gpt4 book ai didi

go - 需要来自 zip 存档条目的 io.ReaderAt(该条目是一个嵌套的 .xlsx 文件)

转载 作者:IT王子 更新时间:2023-10-29 00:35:11 27 4
gpt4 key购买 nike

让我先回答这个问题,我已经知道 excel 2007 文件本身是一个 .zip 文件,重命名为 .xlsx。

好的,现在您知道这是交易了。我正在尝试从内存中的 .zip 存档中提取 Excel 2007 文件。我不能(相反,我真的不想)将整个存档提取到磁盘,然后使用那里的 .xlsx 文件。

问题是我们读取 excel 2007 文件的方法需要一个 ReadAt 方法(例如 io.ReaderAt 定义的)。不幸的是,archive/zip 包公开了一个接口(interface) zip file entries只会回馈io.ReadCloser .

有什么办法可以解决这种情况?同样,我想在内存中完成所有这些操作,而根本不刷新到磁盘。

最佳答案

因为 ZIP 格式不允许在不首先解压缩整个文件的情况下实现 ReadAt,因此您需要这样做。

这并不意味着您必须将它保存到磁盘,而是您可以将它解压缩到内存并使用 bytes 包中的 Reader 从那里对其进行处理:

// ReadAll reads from readCloser until EOF and returns the data as a []byte
b, err := ioutil.ReadAll(readCloser) // The readCloser is the one from the zip-package
if err != nil {
panic(err)
}

// bytes.Reader implements io.Reader, io.ReaderAt, etc. All you need!
readerAt := bytes.NewReader(b)

关于go - 需要来自 zip 存档条目的 io.ReaderAt(该条目是一个嵌套的 .xlsx 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com