关于Julia 1.8版和XLSX的问题



我使用了Julia 1.7命令dfc = DataFrame(XLSX.readtable("data.xlsx","sheet1")...)的效果良好

迁移到Julia 1.8后,相同的命令停止工作,并生成以下错误消息:

ERROR: MethodError: no method matching iterate(::XLSX.DataTable)
Closest candidates are:
iterate(!Matched::Union{LinRange, StepRangeLen}) at range.jl:872
iterate(!Matched::Union{LinRange, StepRangeLen}, !Matched::Integer) at range.jl:872
iterate(!Matched::T) where T<:Union{Base.KeySet{<:Any, <:Dict}, Base.ValueIterator{<:Dict}} at dict.jl:712

在新版本中,该命令发生了什么变化?

期待一些信息

这与您使用的Julia版本无关,也与您正在使用的XLSX.jl版本无关。XLSX文档实际上在这里有一段时间专门讨论这个问题。与您相关的是,readtable现在返回一个Tables.jl兼容的表,因此可以直接传递到DataFrame构造函数中,而不是

DataFrame(XLSX.readtable(myfile, sheet)...)

你做

DataFrame(XLSX.readtable(myfile, sheet))

(注意缺少飞溅操作员(

请注意,当您根据Semver在软件包的中断发布之间移动时,预计会出现这些类型的问题,因此,无论是在主要版本(1.x到2.x版本(之间,还是在1.0之前的次要版本(如0.5.x到0.6.x(之间。如果你想避免这些问题,你应该使用特定于项目的环境,这样Manifest就会记录你正在使用的所有包的版本,除非你为该特定环境手动执行] up,否则它们不会更改。

最新更新