Как я могу настроить свой код, чтобы он совместим с 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 . Это было довольно давно, и наша компания использовала его как для чтения файлов конфигурации для запуска автоматизированного тестирования, так и для создания отчетов о результатах тестирования.

  • Кодирование стран django не дает правильного имени
  • Python возвращает длину 2 для одной символьной строки Unicode
  • Google App Engine: UnicodeDecodeError: кодек ascii не может декодировать байт 0xe2 в позиции 48: порядковый номер не в диапазоне (128)
  • Распечатайте строку unicode для консоли OK, но не удается перенаправить файл. Как исправить?
  • кодировать и декодировать строку байтов python
  • Python, конвертировать 4-байтовый символ, чтобы избежать ошибки MySQL «Неверное строковое значение:»
  • UnicodeEncodeError при выборе URL-адреса
  • Латинские символы Python и Unicode
  •  
    Interesting Posts for Van-Lav

    Написание B-сплайна как кусочно-кубического

    функция плотности вероятности из гистограммы в питоне для установки другой гистограммы

    Как отсортировать список в Python?

    Python Regex – Предложение не включает строки

    Различия в синтаксисе RegEx между Python и Java

    Python: слияние двух списков словарей

    Установить описание сборки Hudson через веб-API

    Пример реплицированного распределенного тензорного потока: grpc_tensorflow_server – нет такого файла или каталога

    Как насмехаться с относительными путями патчей?

    Падающий ряд в серии Panda и индекс очистки

    Получение второго-последнего элемента в списке

    Группирование одинаковых повторяющихся элементов, которые встречаются в строке из списка

    Django subclassing multiwidget – восстановление даты на почте с использованием настраиваемого мультивидкостного

    OpenCV Video Capture с PyQt4

    nltk NaiveBayesClassifier для анализа настроений в блогах

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