Просто добавьте уникальный индекс в этот столбец, после чего вставка дубликатов приведет к ошибке. Затем вы можете обработать ошибку, если это необходимо изящно
поддержка xlrd Office 2007/2008 (OpenXML), формат находится в альфе - тестировании - видит следующее сообщение в группе новостей Excel Python: http://groups.google.com/group/python-excel/msg/0c5f15ad122bf24b?hl=en
FWIW, я - автор xlrd и специалист по обслуживанию xlwt (ветвление pyExcelerator). Несколько точек:
Файл 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()
.
xlrd может считать любой файл, что pyExcelerator может, и читать их лучше — даты не выходят как плавания, и полная история в даты Excel находится в xlrd документации.
pyExcelerator является устаревшим программным обеспечением — xlrd, и xlwt живы и здоровы. Выезд http://groups.google.com/group/python-excel
HTH John
Больше информации о 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, но я ничего не гарантировал бы.
Хорошо вот некоторый код, который я сделал: (посмотрите вниз нижняя часть): здесь
Не уверенный в более новых форматах - если xlrd не может читать, он, xlrd нужно было выпустить новую версию!
Необходимо ли использовать xlrd? Я просто загрузил 'ОБНОВЛЕННЫЙ - Двигатели промышленного индекса Доу-Джонса - 2008' с того веб-сайта и не испытал никаких затруднений при чтении его с pyExcelerator.
import pyExcelerator
book = pyExcelerator.parse_xls('DJIAMovers.xls')