Handle large XLSX files

`openpyxl` loads the entire file in memory. When the workbook contains an excessive amount of empty rows, this can cause a `MemoryError`. See bug #169 for an example.