Как я могу настроить свой код, чтобы он совместим с Microsoft Excel?

проблема

Я пытался реализовать веб-API (на основе Flask ), который будет использоваться для запроса базы данных с учетом некоторых конкретных условий, восстановления данных и, наконец, экспорта результата в CSV- файл.

Поскольку объем данных действительно действительно огромный, я не могу построить весь набор данных и сгенерировать CSV- файл сразу (например, создать DataFrame с помощью pandas и, наконец, вызвать df.to_csv ()), потому что это вызовет медленный запрос и, возможно, http-соединение закончится таймаутом.

Поэтому я создаю генератор, который запрашивает базу данных 500 записей за раз и дает результат один за другим, например:

def __generator(q): [...] # some code here while True: if records == None: break records = q[offset:offset+limit] # q means a sqlalchemy query object [...] # omit some reconstruct code for record in records: yield record 

и, наконец, построить объект Response и отправить CSV на клиентскую сторону:

 return Response(__generate(q), mimetype='text/csv') # Flask 

Генератор работает хорошо, и все данные кодируются «uft-8» , но когда я пытаюсь открыть CSV- файл с помощью Microsoft Excel, он выглядит грязным.

Уже предприняты меры

  • добавить заголовок спецификации в файл экспорта, не работает;

  • используя некоторые другие кодировки типа «gb18030» и «cp936» , большая часть беспорядочного кода исчезает, некоторые все еще остаются, а часть структуры таблицы становится странной.

Мой вопрос

Как я могу сделать свой код совместимым с Microsoft Excel? Это означает, что должны выполняться как минимум два условия:

  • нет беспорядочного кода, хорошо отображается;

  • хорошо структурированная таблица;

Я был бы очень благодарен за ваш ответ!

2 Solutions collect form web for “Как я могу настроить свой код, чтобы он совместим с Microsoft Excel?”

  • Как вы импортируете файл csv в excel? Вы пытались импортировать csv в виде текстового файла?

Читая как текстовый формат для каждого столбца, он не будет изменять столбцы, которые он читает, как разные типы, такие как даты. Ваш код может быть правильным, и excel может просто изменять данные, когда он анализирует его как csv – путем импорта в текстовом формате, он ничего не изменит.

Я бы порекомендовал вам взглянуть на xlutils . Это было довольно давно, и наша компания использовала его как для чтения файлов конфигурации для запуска автоматизированного тестирования, так и для создания отчетов о результатах тестирования.

  • Google App Engine: UnicodeDecodeError: кодек ascii не может декодировать байт 0xe2 в позиции 48: порядковый номер не в диапазоне (128)
  • декодирование и кодирование иврита в Python
  • Пути файлов Python 3: os.walk () UnicodeEncodeError: кодек «utf-8» не может кодироваться: суррогаты не разрешены
  • UnicodeEncodeError: кодек ascii не может кодировать символ u '\ xe9' в позиции 7: порядковый номер не в диапазоне (128)
  • Ширина отображения строк юникода в Python
  • Python возвращает длину 2 для одной символьной строки Unicode
  • BeautifulSoup "(" utf-8 ")
  • UnicodeDecodeError: ('utf-8' codec) при чтении файла csv
  • UnicodeEncodeError: кодек ascii не может кодировать символ u '\ xa0' в позиции 20: порядковый номер не в диапазоне (128)
  • Удаление символов unicode \ u2026 в строке в python2.7
  • Python, конвертировать 4-байтовый символ, чтобы избежать ошибки MySQL «Неверное строковое значение:»
  •  
    Interesting Posts for Van-Lav

    Почему gevent в приложении Flask с Apache + mod_wsgi создает NotImplementedError?

    Функция возвращает кортеж или None: как хорошо называть эту функцию?

    Поддержание отношения при расщеплении данных в функции python

    Строка конкатенации Python и список

    массив numpy C api

    Jinja2 Наследование с блоками и включает

    Почему приложение Flask не создает никаких журналов при размещении в Gunicorn?

    для цикла слишком долго для создания / экспорта вывода в Python

    Есть ли способ обфускации / скрыть командную строку из диспетчера задач Windows с помощью winappdbg?

    OpenCV: Извлечь функции SURF из пользовательских ключевых точек

    Состояние цвета с помощью matplotlib / базовой карты Python

    PyDev и Django: автозаполнение не обнаруживает Django?

    Spark ML Pipeline Causes java.lang.Exception: не удалось скомпилировать … Код … превышает 64 KB

    Есть ли синтаксический анализатор eMail с открытым исходным кодом (заголовки, вложения и т. Д.)?

    список усреднений списков python

    Python - лучший язык программирования в мире.