2015-04-15 3 views
2

Я знаю, что это много задает, но я исследовал несколько способов поиска столбца или поиска строки с использованием python в документе excel.Извлечь информацию из Excel с помощью python 2.7/pyMel?

Однако эти решения требуют, чтобы вы импортировали разные пакеты, когда у меня нет доступа к ним. Моим основным мотивом для этого является использование предварительно подготовленного документа excel с шейдерами, указанными в документе, и их извлечение на основе краткого поиска.

Итак, кто-нибудь успешно использовал python для чтения документа excel и, если да, могли ли вы сопоставлять именованные строки с именованными столбцами?


EDIT: Ответ выбрал, потому что это самое близкое решение, хотя это не обязательно отвечать на мой вопрос. Тем не менее, это будет по-прежнему обеспечивать очень разумное решение, учитывая, что пользователь и его/ее документ excel будут использовать одни и те же столбцы и строки для получения полезной базы данных.

TL; DR:

Нет простой способ сравнить столбцы в строки, чтобы получить набор данных без использования внешнего пакета. Легче просто извлечь данные в виде массива и указать, какой из них «столбец».

+0

Не могли бы вы предоставить sceenshot документа excel? Просто чтобы посмотреть, как форматируются данные, в каких ячейках и т. Д. Затем я дам вам ответ. Я несколько раз работал с Excel и Python и никогда не нашел способ изначально читать файл Excel без импорта какого-либо пакета. Если бы мне пришлось рекомендовать между некоторыми пакетами (xlwings, openpyxl и win32api), я бы пошел с [openpyxl] (https://openpyxl.readthedocs.org/en/latest/) – DrHaze

+0

Это сделка, я не могу использовать другие пакеты. Снимок экрана из excel не будет работать, но я могу составить макетную версию, чтобы вы поняли, для чего я собираюсь, - я расскажу об этом позже сегодня вечером. – SirJames

+0

Я разместил документ excel для вашего просмотра здесь, под ответ модуля csv. – SirJames

ответ

3

Вы также можете прочитать CSV документы, используя встроенный в csv module читать CSV, поэтому не нужно устанавливать какие-либо внешние модули.

import csv 
with open('names.csv') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     print(row['first_name'], row['last_name']) 

Если вы просто захватить все содержимое читателя и запихивать их в список, списки будут содержать все строки и каждая строка будет словарем, используя заголовки в первом ряду. Получение в конкретную ячейку будет примерно таким:

records = [] 
with open('names.csv') as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
     records.append(row) 

# cel "A4" would be 
records[0][3] 
+0

Да, я проверял это некоторое время назад. Он работает очень хорошо, за исключением того, что мне нужно перекрестно проверять несколько переменных или получить определенный набор информации, который варьируется между несколькими ячейками. – SirJames

+0

Итак, что мешает вам достичь этого с помощью модуля CSV. Можете ли вы дать конкретный пример использования и примеры данных и то, что вы пытаетесь достичь. – kartikg3

+0

http: //i.imgur.com/jAynP3A.png Извините за хромой формат, но excel отлично ... И это лучшее, что я мог сделать ... быстро. M1-M5 (для материалов) необходимо перекрестно проверять на соответствие серийным или кодовым номерам. Поскольку модуль CSV читает только строки, у меня нет возможности перекрестно проверять фактический материал на «M - #». Идея состоит в том, что я могу использовать систему кросс-проверки в Maya, чтобы вытащить правильные имена материалов. Надеюсь, что это имеет немного больше смысла ... Пожалуйста, спросите, если это необходимо. – SirJames

1

Я сохраняю свои файлы excel в качестве файла .csv и импортирую данные с помощью numpy.genfromtxt и используя аргумент delimiter=',' для синтаксического анализа тестового файла.

Например:

import numpy 
data = numpy.genfromtxt("my_file.csv", delimiter=",") 
# do stuff with data 
0

модуль xlrd уже в пакете питона и очень проста в использовании:

import xlrd 
xlsFile = xlrd.open_workbook(path) 
sheetName = xlsFile.sheets()[0].name 

for s in xlsFile.sheets(): 
    for row in range(s.nrows): 
     print s.cell(row, 1) 
+0

Xlrd не является частью std-библиотеки Python. – kartikg3

+0

Действительно, я попробовал код на компьютере, который был странным модулем. – DrWeeny