Rob*_*Rob 3 python import excel
我无法弄清楚如何将Excel文件导入我的Python脚本.我只有几天的Python,所以我猜这是非常明显的我缺少的东西.我正在使用Python 3和tablib模块.从tablib网站上的例子中,我已经研究出如何以xls格式保存文件
def saveXLS(self, name, data):
# Form the dataset with the accompanying headers
dataTab = tablib.Dataset()
dataTab.headers = data[0][:]
for i in range(1,len(data)):
dataTab.append(data[i][:])
with open(self.saveDir + name + ".xls", 'wb') as f:
f.write(dataTab.xls)
Run Code Online (Sandbox Code Playgroud)
(我知道循环是可怕的和非Pythonic,但重要的是我现在得到的结果,因为它的工作).目前,我打开Excel工作簿并将其保存为文本文件(我应该指出,我的所有数据都是制表符分隔的,包括字符串,即使是数字).
我打开它就像这样
def loadTxt(self,name, fileType, data):
if( fileType == "txt"):
with open(self.currentWorkingDir + "\\" + name + ".txt",'r') as f:
reader=csv.reader(f,delimiter='\t')
for X in reader:
data.append(X)
Run Code Online (Sandbox Code Playgroud)
我尝试在tablib网站(http://tablib.readthedocs.org/en/latest/api/)上复制"dbf"示例以获取
def loadXLS(self):
self.data = tablib.Dataset()
self.data = open('Data.xlsx').read()
return self.datav
Run Code Online (Sandbox Code Playgroud)
我得到一个错误(正如我所料,因为我把它从我的屁股中拉出来)
UnicodeDecodeError:'charmap'编解码器无法解码位置637中的字节0x8f:字符映射到.
我真的不知道如何解决这个问题,所以任何建议都会非常感激.
您现在可能已经想到了它,但对于下一个人,您需要将Excel文件读为二进制文件:
my_input_stream = open("my_file.xlsx", "rb")
my_dataset = tablib.import_set(my_input_stream)
dataset[1:5]
Run Code Online (Sandbox Code Playgroud)
小智 5
目前,tablib 0.12.1。
我用它来导入我用 tablib 创建的 .xlsx 数据簿,并输出到一个 excel 文件。
要将其恢复到 tablib:
import tablib
my_dataset = tablib.Dataset()
my_dataset.xlsx = open('input_file.xlsx', 'rb').read()
print(my_dataset)
Run Code Online (Sandbox Code Playgroud)
并返回如下内容:
Email |Id |Name
---------------------|-----|---------
my_name@tablib.com |0 |My Name
my_name1@tablib.com |1 |My Name1
my_name2@tablib.com |2 |My Name2
my_name3@tablib.com |3 |My Name3
Run Code Online (Sandbox Code Playgroud)