Слияние .xlsx файла с Python - PullRequest
       3

Слияние .xlsx файла с Python

1 голос
/ 22 октября 2010

Здесь двуглавый вопрос, ребята,

Во-первых, я пытался найти способ чтения файлов .xlsx в python.Xlrd читает файлы .xlsx сейчас?Если нет, каков рекомендуемый способ чтения / записи в такой файл?

Во-вторых, у меня есть два файла с похожей информацией.Одно основное поле с подполями области видимости (например, координаты (основное поле) -> город -> штат -> страна).В более старом файле информации присваивается идентификационный номер, в то время как в более новом файле (с удаленными / добавленными записями) эти идентификаторы отсутствуют.В python я бы 1) открыл два файла 2) проверил первичное поле более старого файла с первичным полем более нового файла и объединил их информацию в новый файл, если они совпадают.Учитывая, что файл не слишком большой, я не возражаю против сложности O (n ^ 2).У меня такой вопрос: есть ли четко определенный способ сделать это в VBA или Excel?Все, что я думаю об использовании библиотеки Excel, кажется слишком медленным, и я не очень хорош в VBA.

Ответы [ 4 ]

4 голосов
/ 22 октября 2010

Я часто обращаюсь к файлам Excel через python и xlrd, python и COM-объект Excel. Для этой работы xlrd не будет работать, потому что он не поддерживает формат xlsx. Но независимо от того, оба подхода являются излишними для того, что вы ищете. Простые формулы Excel доставят то, что вы хотите, в частности VLOOKUP.

VLOOKUP "ищет значение в крайнем левом столбце таблицы, а затем возвращает значение в той же строке из указанного вами столбца".

Несколько советов по VLOOKUP. Во-первых, если вы хотите сопоставить несколько ячеек, создайте «ключевую» ячейку, которая объединяет интересующие вас ячейки (в обеих книгах). Во-вторых, убедитесь, что последний аргумент VLOOKUP задан как FALSE, потому что вам нужны только точные совпадения.

Что касается производительности, формулы Excel часто бывают очень быстрыми.

Прочтите файл справки на VLOOKUP и задайте дополнительные вопросы здесь.

Позднее редактирование (из ответа Марка Бейкера): теперь для xlsx есть решение на python. Openpyxl был создан в этом году Эриком Газони для чтения и записи в формате xlsx в Excel.

2 голосов
/ 22 октября 2010

Я слышал об этом проекте только сегодня утром, поэтому у меня не было возможности посмотреть на него, и я понятия не имею, на что он похож;но взгляните на проект openpyxl Эрика Газони.Код можно найти на bitbucket .Движущей силой этого стало умение читать / записывать файлы xlsx из Python.

0 голосов
/ 24 октября 2010

Добавление ответа Стивена Рубальски:

Возможно, вы захотите иметь значение поиска в любом другом месте, кроме самого левого столбца.В этих случаях функции Index и Match пригодятся.Смотри: http://www.mrexcel.com/articles/excel-vlookup-index-match.php

0 голосов
/ 22 октября 2010

Попробуйте http://www.python -excel.org /

Моя ошибка - я пропустил деталь .xlsx.

Полагаю, вопрос в том, что проще: найти или написать библиотеку, которая обрабатывает формат .xlsx, или сохранить все таблицы Excel в формате .xls и продолжить работу с библиотеками, которые просто обрабатывают старый формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...