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

Extract information from Excel with python 2.7/ pyMel?

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

但是,当我无权访问这些解决方案时,您需要导入不同的包。我这样做的主要动机是利用预制的 excel 文档,其中列出了着色器,并根据简短搜索提取它们。

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


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

长话短说:

在不使用外部包的情况下,没有简单的方法可以将列与行进行比较以获取数据集。将数据提取为数组并指定哪个 "column" 是哪个更容易。

我将 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)

您也可以使用built-in读取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'])

如果你只是抓取 reader 的全部内容并将它们塞入一个列表,列表将包含所有行,并且每一行将是一个使用第一个 headers 的字典排。进入特定的单元格类似于:

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]

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