Improved benchmark coverage for reading spreadsheets
State: closed

- [x] closes #27485
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

AFAIK there's no writer for OpenDocument spreadsheet, so I came up with the minimal amount of code to generate the spreadsheet `odf` engine can read. 

Labels:
name: IO Excel
description: read_excel, to_excel
name: Benchmark
description: Performance (ASV) benchmarks

Comments:
Hello @f6v! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:



There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2019-09-05 12:11:13 UTC
@WillAyd any hints on why the build fails? Here's the log:

> 2019-08-31T11:57:30.9128198Z ##[section]Starting: Linting
2019-08-31T11:57:30.9131004Z ==============================================================================
2019-08-31T11:57:30.9131306Z Task         : Command line
2019-08-31T11:57:30.9131662Z Description  : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
2019-08-31T11:57:30.9131832Z Version      : 2.151.2
2019-08-31T11:57:30.9131942Z Author       : Microsoft Corporation
2019-08-31T11:57:30.9132087Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
2019-08-31T11:57:30.9132192Z ==============================================================================
2019-08-31T11:57:31.0458612Z Generating script.
2019-08-31T11:57:31.0481930Z ========================== Starting Command Output ===========================
2019-08-31T11:57:31.0553456Z [command]/bin/bash --noprofile --norc /home/vsts/work/_temp/4bde5a0e-5e9a-4158-9976-9d998f5cee84.sh
2019-08-31T11:57:31.1743605Z black --version
2019-08-31T11:57:31.3190719Z black, version 19.3b0
2019-08-31T11:57:31.3319768Z Checking black formatting
2019-08-31T11:57:32.5541689Z would reformat /home/vsts/work/1/s/asv_bench/benchmarks/io/excel.py
2019-08-31T11:59:04.9164658Z All done! 💥 💔 💥
2019-08-31T11:59:04.9166223Z 1 file would be reformatted, 869 files would be left unchanged.
2019-08-31T11:59:04.9365347Z Checking black formatting DONE
2019-08-31T11:59:04.9368530Z flake8 --version
2019-08-31T11:59:05.2172478Z 3.7.7 (flake8-comprehensions: 2.2.0, mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.4 on Linux
2019-08-31T11:59:05.2338655Z Linting .py code
2019-08-31T12:00:25.0400290Z Linting .py code DONE
2019-08-31T12:00:25.0401712Z Linting .pyx code
2019-08-31T12:00:29.4242978Z Linting .pyx code DONE
2019-08-31T12:00:29.4244360Z Linting .pxd and .pxi.in
2019-08-31T12:00:30.4925932Z Linting .pxd and .pxi.in DONE
2019-08-31T12:00:30.4927557Z flake8-rst --version
2019-08-31T12:00:30.6353767Z 0.7.0 (flake8-comprehensions: 2.2.0, mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.4 on Linux
2019-08-31T12:00:30.6473535Z Linting code-blocks in .rst documentation
2019-08-31T12:00:36.3178328Z Linting code-blocks in .rst documentation DONE
2019-08-31T12:00:36.3179690Z Linting .pyx code for spacing conventions in casting
2019-08-31T12:00:36.3263028Z Linting .pyx code for spacing conventions in casting DONE
2019-08-31T12:00:36.3263834Z Linting .c and .h
2019-08-31T12:00:37.7741869Z Linting .c and .h DONE
2019-08-31T12:00:37.7743201Z isort --version-number
2019-08-31T12:00:38.0047791Z 4.3.21
2019-08-31T12:00:38.0207900Z Check import format using isort
2019-08-31T12:00:47.6177107Z Skipped 2 files
2019-08-31T12:00:47.6366876Z Check import format using isort DONE
2019-08-31T12:00:47.6583413Z ##[error]Bash exited with code '1'.
2019-08-31T12:00:47.6597021Z ##[section]Finishing: Linting

I can't really figure out what exactly causes the issue here.
If you run `black asv_bench/benchmarks/io/excel.py` I think will fix it
This is the output:

```
(pandas-dev) ➜  asv_bench git:(improve_benchmark) asv continuous -f 1.1 upstream/master HEAD -b ^io.excel --show-stderr
· Creating environments
· Discovering benchmarks
·· Uninstalling from conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt.
·· Building e7d69866 <improve_benchmark> for conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt............................................
·· Installing e7d69866 <improve_benchmark> into conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt..
· Running 4 total benchmarks (2 commits * 1 environments * 2 benchmarks)
[  0.00%] · For pandas commit 5f349338 <master> (round 1/2):
[  0.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt..
[  0.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 12.50%] ··· Running (io.excel.ReadExcel.time_read_excel--).
[ 25.00%] ··· Running (io.excel.WriteExcel.time_write_excel--).
[ 25.00%] · For pandas commit e7d69866 <improve_benchmark> (round 1/2):
[ 25.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt..
[ 25.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 37.50%] ··· Running (io.excel.ReadExcel.time_read_excel--).
[ 50.00%] ··· Running (io.excel.WriteExcel.time_write_excel--).
[ 50.00%] · For pandas commit e7d69866 <improve_benchmark> (round 2/2):
[ 50.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 62.50%] ··· io.excel.ReadExcel.time_read_excel                                                                                                                                                          ok
[ 62.50%] ··· ========== ==========
                engine
              ---------- ----------
                 xlrd     150±5ms
               openpyxl   254±4ms
                 odf      741±10ms
              ========== ==========

[ 75.00%] ··· io.excel.WriteExcel.time_write_excel                                                                                                                                                        ok
[ 75.00%] ··· ============ =========
                 engine
              ------------ ---------
                openpyxl    422±3ms
               xlsxwriter   258±2ms
                  xlwt      212±1ms
              ============ =========

[ 75.00%] · For pandas commit 5f349338 <master> (round 2/2):
[ 75.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt..
[ 75.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-odfpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 87.50%] ··· io.excel.ReadExcel.time_read_excel                                                                                                                                                          ok
[ 87.50%] ··· ========== ==========
                engine
              ---------- ----------
                 xlrd     145±1ms
               openpyxl   256±10ms
                 odf      745±6ms
              ========== ==========

[100.00%] ··· io.excel.WriteExcel.time_write_excel                                                                                                                                                        ok
[100.00%] ··· ============ =========
                 engine
              ------------ ---------
                openpyxl    436±6ms
               xlsxwriter   261±3ms
                  xlwt      225±3ms
              ============ =========


BENCHMARKS NOT SIGNIFICANTLY CHANGED.
```
Thanks for the help! @WillAyd @mroeschke
Great! Thanks @f6v