Как я читаю файл Excel в Python с помощью xlrd? Это может считать более новые форматы Office?

Просто добавьте уникальный индекс в этот столбец, после чего вставка дубликатов приведет к ошибке. Затем вы можете обработать ошибку, если это необходимо изящно

11
задан 3 revs, 2 users 100%lowkey 31 May 2015 в 00:51
поделиться

5 ответов

поддержка xlrd Office 2007/2008 (OpenXML), формат находится в альфе - тестировании - видит следующее сообщение в группе новостей Excel Python: http://groups.google.com/group/python-excel/msg/0c5f15ad122bf24b?hl=en

3
ответ дан 3 December 2019 в 03:06
поделиться

FWIW, я - автор xlrd и специалист по обслуживанию xlwt (ветвление pyExcelerator). Несколько точек:

  1. Файл ComponentReport-DJI.xls неверно называется; это не файл XLS, это - tab-separated-values файл. Откройте его с текстовым редактором (например, Блокнот), и Вы будете видеть то, что я имею в виду. Можно также посмотреть на not-very-raw необработанные байты с Python:

    >>> open('ComponentReport-DJI.xls', 'rb').read(200)
    'COMPANY NAME\tPRIMARY EXCHANGE\tTICKER\tSTYLE\tICB SUBSECTOR\tMARKET CAP RANGE\
    tWEIGHT PCT\tUSD CLOSE\t\r\n3M Co.\tNew York SE\tMMM\tN/A\tDiversified Industria
    ls\tBroad\t5.15676229508\t50.33\t\r\nAlcoa Inc.\tNew York SE\tA'
    

    Можно читать, этот файл с помощью csv модуля Python... просто используют delimiter="\t" в Вашем вызове к csv.reader().

  2. xlrd может считать любой файл, что pyExcelerator может, и читать их лучше — даты не выходят как плавания, и полная история в даты Excel находится в xlrd документации.

  3. pyExcelerator является устаревшим программным обеспечением — xlrd, и xlwt живы и здоровы. Выезд http://groups.google.com/group/python-excel

HTH John

26
ответ дан 3 December 2019 в 03:06
поделиться

Больше информации о pyExcelerator: Для чтения файла сделайте это:

import pyExcelerator
book = pyExcelerator.parse_xls(filename)

где имя файла является строкой, которая является именем файла для чтения (не подобный файлу объект). Это даст Вам структуру данных, представляющую рабочую книгу: список пар, где первый элемент пары является названием рабочего листа и вторым элементом, является данными рабочего листа.

Данные рабочего листа являются словарем, где ключи (строка, седло), пары (запускающийся с 0) и значения являются содержанием ячейки - обычно интервал, плавание или строка. Так, например, в простом случае всех данных, находящихся на первом рабочем листе:

data = book[0][1]
print 'Cell A1 of worksheet %s is: %s' % (book[0][0], repr(data[(0, 0)]))

Если ячейка будет пуста, то Вы получите KeyError. Если Вы имеете дело с датами, они могут (я забыть), проникает как целые числа или плавания; если это верно, необходимо будет преобразовать. В основном правило: datetime.datetime (1899, 12, 31) + datetime.timedelta (days=n), но это могло бы быть выключено 1 или 2 (потому что Excel рассматривает 1900 как високосный год для совместимости с Lotus, и потому что я не могу помнить, ли 01.01.1900 0 или 1), также - некоторые эмпирические для проверки. Datetimes хранятся как плавания, я думаю (дни и части дня).

Я думаю, что существует частичная поддержка forumulas, но я ничего не гарантировал бы.

1
ответ дан 3 December 2019 в 03:06
поделиться

Хорошо вот некоторый код, который я сделал: (посмотрите вниз нижняя часть): здесь

Не уверенный в более новых форматах - если xlrd не может читать, он, xlrd нужно было выпустить новую версию!

0
ответ дан 3 December 2019 в 03:06
поделиться

Необходимо ли использовать xlrd? Я просто загрузил 'ОБНОВЛЕННЫЙ - Двигатели промышленного индекса Доу-Джонса - 2008' с того веб-сайта и не испытал никаких затруднений при чтении его с pyExcelerator.

import pyExcelerator
book = pyExcelerator.parse_xls('DJIAMovers.xls')
-1
ответ дан 3 December 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: