# I want to read xlsx documents. Should I use XLSX.jl, ExcelReaders.jl, Taro.jl, or XSLXReader.jl?

**URL:** https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776
**Category:** General Usage
**Created:** [August 20, 2018, 5:09pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776 "2018-08-20T17:09:38Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![galenlynch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/galenlynch/32/17947_2.png) [@galenlynch](https://discourse.julialang.org/u/galenlynch)
#### Post date: [August 20, 2018, 5:09pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/1 "2018-08-20T17:09:38Z")

</div>

There seems to be a bevy of excel packages in Julia. I see that Taro and ExcelReaders use different libraries, but I’m having a hard time distinguishing and choosing between all these packages. I see that ExcelFiles.jl also exists, but seems to be an adaptor library for ExcelReaders.

Does anyone have experience with these libraries or a recommendation?

Edit with links:

- [XLSXReader.jl](https://github.com/mpastell/XLSXReader.jl) - build failing?
- [XLSX.jl](https://github.com/felipenoris/XLSX.jl) - pure julia, read and write
- [Taro.jl](https://github.com/aviks/Taro.jl) - uses java libraries, read a whole bunch of file types
- [ExcelReaders.jl](https://github.com/queryverse/ExcelReaders.jl) - uses python xlrd, read only

---

<div class="post-metadata">

### Author: ![galenlynch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/galenlynch/32/17947_2.png) [@galenlynch](https://discourse.julialang.org/u/galenlynch)
#### Post date: [August 20, 2018, 5:31pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/2 "2018-08-20T17:31:50Z")

</div>

I see that ExcelReaders uses `DataValue{Union{}}()` for empty cells. Is DataValues.jl an alternative for `missing` in Julia? What’s the benefit of not just using `missing`?

---

<div class="post-metadata">

### Author: ![standarddeviant](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/standarddeviant/32/2309_2.png) [@standarddeviant](https://discourse.julialang.org/u/standarddeviant)
#### Post date: [August 20, 2018, 5:41pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/3 "2018-08-20T17:41:08Z")

</div>

Just as an FYI, I recently avoided `ExcelReaders.jl` precisely because `DataValue` entries. I ended up exporting from excel to csv and just using `CSV.jl` to work with `DataFrames`.

---

<div class="post-metadata">

### Author: ![felipenoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/felipenoris/32/553_2.png) [@felipenoris](https://discourse.julialang.org/u/felipenoris)
#### Post date: [August 20, 2018, 6:46pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/4 "2018-08-20T18:46:22Z")

</div>

As the developer of XLSX.jl, I would say that a unique feature of this package is the existence of deliberate [hidden bugs](https://github.com/felipenoris/XLSX.jl/issues/54) to make this life less miserable.

---

<div class="post-metadata">

### Author: ![felipenoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/felipenoris/32/553_2.png) [@felipenoris](https://discourse.julialang.org/u/felipenoris)
#### Post date: [September 4, 2018, 1:36pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/5 "2018-09-04T13:36:56Z")

</div>

> [@\[ANN\] XLSX.jl now supports Julia v1.0](https://discourse.julialang.org/t/ann-xlsx-jl-now-supports-julia-v1-0/14537):
>
> After a full rewrite of all custom iterators, XLSX.jl is now available for Julia v1.0 . Enjoy!

---

<div class="post-metadata">

### Author: ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)
#### Post date: [September 4, 2018, 1:54pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/6 "2018-09-04T13:54:44Z")

</div>

> [@felipenoris](#):
>
> As the developer of XLSX.jl, I would say that a unique feature of this package is the existence of deliberate [hidden bugs](https://github.com/felipenoris/XLSX.jl/issues/54) to make this life less miserable.

Have you received any feedback? I am curious how people reacts these kind of challenges.

Could you also open a little bit how this makes life less miserable? My purpose is to learn here, this something I see the first time.

---

<div class="post-metadata">

### Author: ![felipenoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/felipenoris/32/553_2.png) [@felipenoris](https://discourse.julialang.org/u/felipenoris)
#### Post date: [September 4, 2018, 2:01pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/7 "2018-09-04T14:01:03Z")

</div>

This was a joke, and I hope you understand that.  
The true story is that this is a code path I wrote to speed up the package, but I’m not sure if it introduces a bug (almost certain it does), so I left this as an easter egg for curious developers.

---

<div class="post-metadata">

### Author: ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)
#### Post date: [September 4, 2018, 3:07pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/8 "2018-09-04T15:07:25Z")

</div>

I don’t understand the joke, which is always embarrassing to admit. I understood it’s humour and that’s why I asked. That’s also the reason I tried to select words in such a way that nobody would be offended (because I didn’t get the joke).

Stupid technical question: can’t you use unit testing to make sure you don’t have a bug?

---

<div class="post-metadata">

### Author: ![felipenoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/felipenoris/32/553_2.png) [@felipenoris](https://discourse.julialang.org/u/felipenoris)
#### Post date: [September 4, 2018, 3:23pm UTC](https://discourse.julialang.org/t/i-want-to-read-xlsx-documents-should-i-use-xlsx-jl-excelreaders-jl-taro-jl-or-xslxreader-jl/13776/9 "2018-09-04T15:23:21Z")

</div>

I’m unable to trigger the bug. That’s the whole point.  
I should also point out that I’m great in making bad jokes. 😅
