Jet/ACE OLE DB
either read worksheet as strings, or as typed columns, so you either lose numbers precision or you must have headers in the first row. Thus, they are to be avoided.
- No library supports XLSB.
- Speed.
- For a large XLS, the time of reading for
NPOI
:Jet
:Koogra
:EDR
is 14:8:7:5.
- For the same XLSX, the time for
EPPlus
:NPOI
:Koogra
:EDR
is 52:36:20:16.
- For relatively small files with many tabs
EPPlus
can be a bit faster than EDR
.
- Errors (#DIV/0!, #VALUE!) etc.
EDR
and Koogra
don't explicitly support errors. EDR
reads them as usual strings, Koogra
-- as blank cells.
NPOI
and EPPlus
do.
- Koogra reads dates as [OLE date] numbers and they are undistinguishable from real numbers. Also it sometimes reads numbers with many decimals digits incorrectly.
EDR
gets this fine. So, no to Koogra
.
NPOI
is complicated, 5 dlls of 4 MB. Koogra
and EDR
are simple, 200 KB and two dlls (themselves and zip) each.
EDR
works as a IDataReader
, so it reads data sequentially. It also has built-in function to get a DataSet
. With sequential read yoou can only go through first sheet in the work book. Koogra
supports random access to cells and sheets.
EDR
is based on SharpZip
, Koogra
is based on Ionic.Zip
. The former allows to open a file from .zip a Stream
which can be benefical for other parts of the project.
I haven't looked at writing aspects of NPOI
, so without the need to distinguish errors, I would go with EPPlus
for .xlsx and with EDR for reading .xls.