繁体   English   中英

使用python 2.7 / pyMel从Excel中提取信息?

[英]Extract information from Excel with python 2.7/ pyMel?

我知道这要问很多,但是我研究了很多方法在excel文档中使用python查找列或查找行。

但是,这些解决方案要求您在我无权访问它们时导入不同的程序包。 我这样做的主要目的是利用预制的excel文档以及文档中列出的着色器,然后根据简短搜索将其提取出来。

那么,有没有人成功地使用python读取excel文档,如果是,您是否能够将命名行与命名列匹配?


编辑:之所以选择答案,是因为它是最接近的解决方案,尽管它不一定能回答我的问题。 但是,考虑到用户及其excel文档将利用相同的列和行来获取可用数据库的上下文,它仍将提供一个非常合理的解决方案。

TL; DR:

如果不使用外部包,则没有简单的方法可以将列与行进行比较以获取数据集。 仅将数据提取为数组并指定哪个“列”会更容易。

您还可以使用内置的csv模块读取CSV文档,以读取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]

我将excel文件另存为.csv文件,并使用numpy.genfromtxt导入数据,并使用delimiter=','参数解析测试文件。

例如:

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

xlrd模块已经在python包中,并且非常易于使用:

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)

1.安装

Maya在所有受支持的平台上使用Python版本2.7.11。 Maya的独立Python Shell在Windows上名为mayapy.exe ,位于D:\\Program Files\\Autodesk\\Maya2017\\bin\\mayapy.exe 将其放入系统环境路径。

如果pip.exe ,请转到https://pip.pypa.io/en/stable/installing/并下载get-pip.py

从控制台:

C:\Users\JM-FF>python get-pip.py

成功安装pip后, pip.exe位于D:\\Program Files\\Autodesk\\Maya2017\\Python\\Scripts 将其放入系统环境路径。

安装XlsxWriter:

C:\Users\JM-FF>pip install XlsxWriter

2.步骤

现在,在ScriptEditor中打开Maya,编写如下代码:


import xlsxwriter

workbook = xlsxwriter.Workbook('hello.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(11,3,"hello")
workbook.close()

现在,您可以使用Python从Maya读取数据并将数据写入Excel。

hello.xlsx位于D:\\Program Files\\Autodesk\\Maya2017\\bin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM