Breaking ExcelReaders.jl update

Hi everyone,

just a heads up that I’ve just released a new version of ExcelReaders.jl that is breaking. The new version removes all support for DataFrames.jl and no longer uses DataArrays.jl.

But, fear not, you can still read Excel data into tables like DataFrame! You’ll have to use a different package for that going forward, though: ExcelFiles.jl.

The main benefit of these changes are: a) ExcelReaders.jl no longer keeps you from getting new versions of DataFrames.jl (the old version was not compatible with DataFrames.jl v0.11), b) instead of special casing things for DataFrames.jl, all the 18 sink types from IterableTables.jl are equally supported. So the default solution allows you to read things into DataFrames.jl, JuliaDB.jl, Pandas.jl and all the other supported sinks. Plus, everything should work with the latest DataFrames.jl version.

I’m sorry to break things (I try really, really hard to not make any breaking changes in the Queryverse). But the changes in DataFrames.jl v0.11 meant that things would break no matter what, so I used that occasion to clean out the relationship between ExcelReaders.jl and ExcelFiles.jl properly.

Cheers,
David

13 Likes

Thanks @davidanthoff, I would like to share another alternative by @felipenoris that is in pure Julia: GitHub - felipenoris/XLSX.jl: Excel file reader and writer for the Julia language. It doesn’t require external libraries or other interpreters like Python to function. It seems like it is faster too, which is great.

I see benefit in joining efforts to make it FileIO-compatible. :+1:

10 Likes

I also gave a shot to the implementation in pure Julia. Using EzXML and ZipFile. XLSXread.jl. I wrote it when I was working with large files and both ExcelReaders and Taro where too slow and I also run out of memory.

I found it was also useful provide the ability to read an entire file at once for performance issues. I wrote it for my personal issue and I have no intent of pushing it further. Feel free to use anything you find useful in the code.

cheers!