У меня возникли проблемы с тем, как импортировать файлы Excel в мой сценарий Python. Я всего несколько дней на Python, поэтому я предполагаю, что это очень очевидно, что я пропал без вести. Я использую Python 3 и модуль tablib. Из примеров на сайте tablib, я работал, как сохранять файлы в формате XLSPython - использовать для tablib для импорта файлов Excel (xls, xlsx)
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)
(я знаю, что петля ужасна и непитоновский, но это важно, я получаю результаты на данный момент, как это для работы). На данный момент я открываю книгу 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)
Я попытался скопировать пример "DBF" на сайте tablib (http://tablib.readthedocs.org/en/latest/api/), чтобы получить
def loadXLS(self):
self.data = tablib.Dataset()
self.data = open('Data.xlsx').read()
return self.datav
И я получаю ошибку (как я ожидал, как я вытащил его из своей задницы)
UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x8f в позиции 637: символьные карты.
Я действительно не знаю, как это понять, к сожалению, поэтому любой совет будет действительно оценен.
пытаюсь это, но я получаю 'UnicodeDecodeError: кодек 'UTF-8' не может декодировать байт 0x8e в позиции 16: недействительный стартовый байт' .. мышление python версия? Am on python3.5 – lukik
У меня есть TypeError («ожидаемая строка или буфер») при попытке выше. Исправлено с помощью 'my_input_stream = open (" my_file.xlsx "," rb "). Read()'. Также набор данных индексируется с нуля, поэтому, чтобы увидеть первые пять строк данных, используйте 'dataset [0: 4]'. – isedwards