有没有办法从Julia的google drive下载excel文件(包含多张工作表)?
我曾尝试使用“GoogleDrive”库中的google_下载(“URL”、“本地_路径”),但它似乎只得到csv格式的第一张表单有没有办法从Julia的google drive下载excel文件(包含多张工作表)?,julia,xlsx,Julia,Xlsx,我曾尝试使用“GoogleDrive”库中的google_下载(“URL”、“本地_路径”),但它似乎只得到csv格式的第一张表单 有什么线索吗?看起来Google Drive.jl只是在做一些url操作 谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API 通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id { "spreadsheetId": string, "properties&
有什么线索吗?看起来Google Drive.jl只是在做一些url操作 谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API 通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id
{
"spreadsheetId": string,
"properties": {
object (SpreadsheetProperties)
},
"sheets": [
{
object (Sheet)
}
],
"namedRanges": [
{
object (NamedRange)
}
],
"spreadsheetUrl": string,
"developerMetadata": [
{
object (DeveloperMetadata)
}
]
}
然后,您可以取出这些工作表id并对其进行处理,例如使用csv格式对每个工作表进行导出请求
手动为每张图纸绘制gid
如果您不想使用API,只需在单击每个ID时将这些ID从浏览器URL中复制出来,就可以将它们转换为下载链接
要让他们正确地通过导出链接,您需要将gid传递到导出url中,如下所示:
(这是对GoogleDrive.sheet_处理程序的稍加修改的版本,它接受了工作表gid)
因此,对于我的示例测试表,我有三张带有以下GID的测试表
- 表1,gid=0
- 表2,gid=972467363
- 表3,gid=1251741166
DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
以下是运行示例:
julia> using GoogleDrive
julia> using GoogleDrive.DataDeps
julia> url = read("link.txt", String)
"https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/edit?usp=sharing"
julia> DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
┌ Info: Downloading
│ source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│ dest = "./export?format=csv&gid=1251741166"
│ progress = NaN
│ time_taken = "0.0 s"
│ time_remaining = "NaN s"
│ average_speed = "∞ B/s"
│ downloaded = "404 bytes"
│ remaining = "∞ B"
└ total = "∞ B"
┌ Info: Downloading
│ source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│ dest = "./download-test-julia-Sheet3.csv"
│ progress = NaN
│ time_taken = "0.0 s"
│ time_remaining = "NaN s"
│ average_speed = "7.324 KiB/s"
│ downloaded = "15 bytes"
│ remaining = "∞ B"
└ total = "∞ B"
"./download-test-julia-Sheet3.csv"
shell> cat download-test-julia-Sheet3.csv
Data on Sheet 3
以包含所有工作表的格式下载
如果以支持多张工作表的格式使用sheet\u处理程序
调用和传递,则可以在本地解析和操作输出。例如使用xlsx
。我刚才没有试过,但电话可能是这样的:
DataDeps.fetch_http(sheet_handler(url; format=:xlsx), ".")
然后找到你最喜欢的Julia Excel库,你就可以开始比赛了。它看起来像是Google Drive的精髓。jl只是在做一些url操作 谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API 通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id
{
"spreadsheetId": string,
"properties": {
object (SpreadsheetProperties)
},
"sheets": [
{
object (Sheet)
}
],
"namedRanges": [
{
object (NamedRange)
}
],
"spreadsheetUrl": string,
"developerMetadata": [
{
object (DeveloperMetadata)
}
]
}
然后,您可以取出这些工作表id并对其进行处理,例如使用csv格式对每个工作表进行导出请求
手动为每张图纸绘制gid
如果您不想使用API,只需在单击每个ID时将这些ID从浏览器URL中复制出来,就可以将它们转换为下载链接
要让他们正确地通过导出链接,您需要将gid传递到导出url中,如下所示:
(这是对GoogleDrive.sheet_处理程序的稍加修改的版本,它接受了工作表gid)
因此,对于我的示例测试表,我有三张带有以下GID的测试表
- 表1,gid=0
- 表2,gid=972467363
- 表3,gid=1251741166
DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
以下是运行示例:
julia> using GoogleDrive
julia> using GoogleDrive.DataDeps
julia> url = read("link.txt", String)
"https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/edit?usp=sharing"
julia> DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
┌ Info: Downloading
│ source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│ dest = "./export?format=csv&gid=1251741166"
│ progress = NaN
│ time_taken = "0.0 s"
│ time_remaining = "NaN s"
│ average_speed = "∞ B/s"
│ downloaded = "404 bytes"
│ remaining = "∞ B"
└ total = "∞ B"
┌ Info: Downloading
│ source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│ dest = "./download-test-julia-Sheet3.csv"
│ progress = NaN
│ time_taken = "0.0 s"
│ time_remaining = "NaN s"
│ average_speed = "7.324 KiB/s"
│ downloaded = "15 bytes"
│ remaining = "∞ B"
└ total = "∞ B"
"./download-test-julia-Sheet3.csv"
shell> cat download-test-julia-Sheet3.csv
Data on Sheet 3
以包含所有工作表的格式下载
如果以支持多张工作表的格式使用sheet\u处理程序
调用和传递,则可以在本地解析和操作输出。例如使用xlsx
。我刚才没有试过,但电话可能是这样的:
DataDeps.fetch_http(sheet_handler(url; format=:xlsx), ".")
然后找到你最喜欢的Julia Excel库,你就可以开始比赛了。你需要提供你试图使用的源代码。我写了一个很长的答案,但您可能只想将格式指定为xlsx,然后从本地xlsx文件分别导出每张图纸。您需要提供您尝试使用的源代码。我写了一个很长的答案,但您可能只想将格式指定为xlsx,然后从本地xlsx文件分别导出每张图纸。