julia - 如何从 Julia 中的 XLSX 获取文件名

标签 julia xlsx

我在 julia 中将 xf 定义为 XLSX 文件

xf=XLSX.readxlsx(file)

现在我想打印xf的文件名 就像

xf.name

我该怎么办?

我使用了 xf.name 但它不起作用。 请记住,xf 是 Excel 文件,而不是工作表。 我知道对于工作表,我们可以使用sheet.name来获取名称,但是对于文件,我如何获取名称?


xf 应包含文件名信息,如您所见

xf=XLSX.readxlsx("12as.xlsx")
print(xf)

它正确显示文件名“12as.xlsx”。我怎样才能得到这些信息?


XLSXFile("12as.xlsx") 包含 30 个工作表 图纸名称尺寸范围
测试 034 472x7 A1:G472
测试031 472x7 A1:G472


已解决:

xf.source  

最佳答案

您加载到 Julia 中的 XLSX 文件是数据的抽象表示,这些数据可能存在于文件系统中,也可能不存在,因此 XLSX 数据本身没有与之关联的“文件名”概念。但是,如果您读取带有 xf = XLSX.readxlsx(file) 的 XLSX 文件,然后是对对象 file 的引用存储为xf.source 。因此,如果您通过传递 readxlsx 来读取 XLSX 文件字符串参数 file ,文件名可以打印如下:

using XLSX
xf = XLSX.readxlsx("location/of/file.xlsx")
println(xf.source)  # prints "location/of/file.xlsx"

但是,您应该知道xf.source is defined as type Union{AbstractString,IO} in the source code ,这反射(reflect)出 XLSX.readxlsx可以使用继承自IO的对象来调用,像这样:

using XLSX
open("location/of/file.xlsx") do f
    xf = XLSX.readxlsx(f) # Works just fine to open the file this way.
    println(xf.source)    # ERROR: ArgumentError: write failed, IOStream is not writeable
end

此代码抛出异常,因为 xf.source是对 IOStream 的引用用open(file)打开的对象,和println(io::IO)将尝试将换行符写入 io ,在本例中不可写,因为 open(file)默认为只读模式。

“文件名”的概念是文件系统知道的东西,但不是 XLSX 文件必须知道或关心的东西。如果您需要知道您打开的文件的名称,您可以使用此 xf.source hack,但它 (a) 可能会更改的包的未记录的内部功能,并且 (b) 仅当您通过传递 XLSX.readxlsx 打开文件时才有效。一个字符串。因为你必须知道要使用的文件名xf.source无论如何,最好将其存储在其他变量中并在必要时引用:

using XLSX
file = "location/of/file.xlsx"
xf = XLSX.readxlsx(file)
println(file)  # prints "location/of/file.xlsx"

关于julia - 如何从 Julia 中的 XLSX 获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76255460/

相关文章:

julia - 从分布向量创建绘制矩阵

julia - 在 Julia 中生成大型稀疏图像

python - 如何更改文件扩展名?

sql - 将数据从 Oracle SQL Developer 导出到 Excel .xlsx

javascript - Meteor:xlsx到json解析

arrays - 在 Julia 数组理解中杀死 For 循环

Julia:具有内部构造函数的参数类型:new 和 typeof

javascript - 如何使用 NodeJS 将 2 个 XLSX 文件合并为一个

java - StreamingReader 与 Excel xlsx Java 配合使用时遇到问题

matplotlib - Pyplot.jl 中具有相等和共享轴的子图