Не знаю в какой топик стоит запостить, наверное всё же сюда, по прикладной теме, хотя по-сути вопрос больше по MS Excel.
У меня из базы происходит поточная выгрузка пользователям. Поточная — это значит выгрузка большая и долгая, нельзя её всю сохранить во временный файл. Когда есть "голова" "хвост" ещё не известен.
Для этой цели мы использовали CSV и TSV, ещё и опцонально сжимали это поточным фильтром копрессии bz2.
Однако у
тупых простых пользователей вечные проблемы с CSV.
Поэтому очень хочется перейти на другой формат. Позавчера случайно наткнулся на статью
https://habrahabr.ru/post/236107/ и сходу на основе этого удалось сделать что надо!

XML я формирую один, одной простынёй, лист вкладываю в книгу.
Хотя нигде в Интернете не нашёл, что так можно — проверка показала что полученная таблица открывается как MS Excel так и Open Office Calc (правда разные версии не проверял) нормально и без всякой ругани.
Однако вопрос. Хотелось бы сжать это. Во-первых везде написано что должно быть сжато. Во-вторых как бы и трафик-место поэкономить. Как?
Поступить так как сделал автор статьи (вызов внешней комманды zip -m) не могу — так как в моём случае обработка должна быть поточной, конвеерной. Я не могу сохранить данные во временной файл!
Сделал штатный фильтр PHP zlib.deflate — что получилось не открывают офисы!
PS В статье PHP, но вопрос в общем не относится к web-программированию или к конкретному языку. Ищу ответ на любом нормальном языке — C++, Java, Scala, C# ...