No engine for filetype excel

Asked
3 years, 11 months ago

Viewed
53k times

from datetime import datetime
x="Hello, it is now %s." % datetime.now().strftime('%d-%m-%Y %H:%M:%S')
import csv
try:
    with open('output.csv', 'w+') as csvFile:
        writer=csv.writer(csvFile)
        writer.writerow(x.encode('UTF-8'))
        print(x.encode('UTF-8'))
finally:
    csvFile.close()
import pandas as pd
data = pd.read_csv('output.csv')
data.to_excel('output.xlsk')

Is this office365 problem?
or my code

environment:windows10

asked Apr 17, 2019 at 21:17

3

Your title answers the question. There is no such excel file format as ‘.xlsk’. Perhaps you meant

data.to_excel('output.xlsx')

?

answered Apr 17, 2019 at 21:21

osprey's user avatar

ospreyosprey

6985 silver badges15 bronze badges

simply try

df.to_csv("output.csv")

answered Jan 2, 2021 at 8:57

Shah Vipul's user avatar

Shah VipulShah Vipul

5576 silver badges11 bronze badges

2

Привет, мои коллеги по работе с данными.

Это мой первый вопрос, поэтому я постараюсь быть более внимательным.

Сегодня я пытаюсь превратить серию больших документов Excel с множеством листов в один гигантский набор данных, а также внести некоторые изменения в способ отображения данных. Чтобы быть ясным, я имею дело с сотнями листов, поэтому я ищу способы оптимизировать решение.

В частности, у меня есть список имен таблиц данных, которые мне нужно извлечь из большой электронной таблицы Excel. Затем я пытаюсь перебрать этот список и сохранить отредактированный список как новый файл в папке в моем блокноте jupyter.

Вот чего бы я хотел:

list_of_tables = [a,b,c,d,e]
for i in range (0, len(list_of_tables):
      df = pd.read_excel (r'Large_dataset_X.xlsx', sheet_name=list_of_tables[i])

      {Bunch of code formatting and editing the file}

      arg = "r'Edited Tables/" + list_of_tables[i] + "_Table_New.xlsx'"
      df.to_excel(arg, sheet_name= list_of_tables[i], index = False)

Проблема в том, что когда я делаю этот цикл, аргумент to_excel (), содержащий путь, выдает ошибку: «движок не может распознать файлы .xlsx».

Error Traceback:

---------------------------------------------------------------------------
OptionError                               Traceback (most recent call last)
~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
    632                 try:
--> 633                     engine = config.get_option(f"io.excel.{ext}.writer")
    634                     if engine == "auto":

~anaconda3libsite-packagespandas_configconfig.py in __call__(self, *args, **kwds)
    232     def __call__(self, *args, **kwds):
--> 233         return self.__func__(*args, **kwds)
    234 

~anaconda3libsite-packagespandas_configconfig.py in _get_option(pat, silent)
    104 def _get_option(pat: str, silent: bool = False):
--> 105     key = _get_single_key(pat, silent)
    106 

~anaconda3libsite-packagespandas_configconfig.py in _get_single_key(pat, silent)
     90             _warn_if_deprecated(pat)
---> 91         raise OptionError(f"No such keys(s): {repr(pat)}")
     92     if len(keys) > 1:

OptionError: 'No such keys(s): "io.excel.xlsx'.writer"'

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
<ipython-input-24-ec2db8d02335> in <module>
      1 arg = "r'Edited Tables/" + list_of_tables[key] + "_Table_New.xlsx'"
      2 # print(arg)
----> 3 df.to_excel(arg, sheet_name= list_of_tables[key], index = False)

~anaconda3libsite-packagespandascoregeneric.py in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose, freeze_panes)
   2024             inf_rep=inf_rep,
   2025         )
-> 2026         formatter.write(
   2027             excel_writer,
   2028             sheet_name=sheet_name,

~anaconda3libsite-packagespandasioformatsexcel.py in write(self, writer, sheet_name, startrow, startcol, freeze_panes, engine)
    728             need_save = False
    729         else:
--> 730             writer = ExcelWriter(stringify_path(writer), engine=engine)
    731             need_save = True
    732 

~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
    635                         engine = _get_default_writer(ext)
    636                 except KeyError as err:
--> 637                     raise ValueError(f"No engine for filetype: '{ext}'") from err
    638             cls = get_writer(engine)
    639 

ValueError: No engine for filetype: 'xlsx''

Я попытался переключиться на формат csv, но ошибка не исчезла. Не уверен, что не так. Спасибо!

В строке arg = "r'Edited Tables/" + list_of_tables[i] + "_Table_New.xlsx'" в конце стоит лишний апостроф.

Измените это на:

arg = r"Edited Tables/" + list_of_tables[i] + "_Table_New.xlsx"

Обратите внимание, что в сообщении об ошибке говорится ValueError: No engine for filetype: 'xlsx'', поскольку он не знает, как обрабатывать файл xlsx', но с xlsx без конечного апострофа будет нормально.

Часть "r'Edited Tables/" также имеет аналогичную проблему.


1

Zev
18 Авг 2021 в 17:25

#python #pandas #dataframe #data-science #export-to-excel

Вопрос:

Привет, мои коллеги-любители данных.

Это мой первый вопрос в истории, поэтому я постараюсь быть предельно внимательным.

Сегодня я пытаюсь превратить серию больших документов Excel с большим количеством листов в один гигантский набор данных, а также внести некоторые изменения в способ отображения данных. чтобы быть ясным, я имею дело с сотнями листов, поэтому я ищу способы оптимизации решения.

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

Вот что я хотел бы, чтобы произошло:

 list_of_tables = [a,b,c,d,e]
for i in range (0, len(list_of_tables):
      df = pd.read_excel (r'Large_dataset_X.xlsx', sheet_name=list_of_tables[i])

      {Bunch of code formatting and editing the file}

      arg = "r'Edited Tables/"   list_of_tables[i]   "_Table_New.xlsx'"
      df.to_excel(arg, sheet_name= list_of_tables[i], index = False)
 

Проблема в том, что, когда я выполняю этот цикл, аргумент to_excel (), содержащий путь, выдает ошибку: «движок не может распознать файлы .xlsx».

 Error Traceback:

---------------------------------------------------------------------------
OptionError                               Traceback (most recent call last)
~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
    632                 try:
--> 633                     engine = config.get_option(f"io.excel.{ext}.writer")
    634                     if engine == "auto":

~anaconda3libsite-packagespandas_configconfig.py in __call__(self, *args, **kwds)
    232     def __call__(self, *args, **kwds):
--> 233         return self.__func__(*args, **kwds)
    234 

~anaconda3libsite-packagespandas_configconfig.py in _get_option(pat, silent)
    104 def _get_option(pat: str, silent: bool = False):
--> 105     key = _get_single_key(pat, silent)
    106 

~anaconda3libsite-packagespandas_configconfig.py in _get_single_key(pat, silent)
     90             _warn_if_deprecated(pat)
---> 91         raise OptionError(f"No such keys(s): {repr(pat)}")
     92     if len(keys) > 1:

OptionError: 'No such keys(s): "io.excel.xlsx'.writer"'

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
<ipython-input-24-ec2db8d02335> in <module>
      1 arg = "r'Edited Tables/"   list_of_tables[key]   "_Table_New.xlsx'"
      2 # print(arg)
----> 3 df.to_excel(arg, sheet_name= list_of_tables[key], index = False)

~anaconda3libsite-packagespandascoregeneric.py in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose, freeze_panes)
   2024             inf_rep=inf_rep,
   2025         )
-> 2026         formatter.write(
   2027             excel_writer,
   2028             sheet_name=sheet_name,

~anaconda3libsite-packagespandasioformatsexcel.py in write(self, writer, sheet_name, startrow, startcol, freeze_panes, engine)
    728             need_save = False
    729         else:
--> 730             writer = ExcelWriter(stringify_path(writer), engine=engine)
    731             need_save = True
    732 

~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
    635                         engine = _get_default_writer(ext)
    636                 except KeyError as err:
--> 637                     raise ValueError(f"No engine for filetype: '{ext}'") from err
    638             cls = get_writer(engine)
    639 

ValueError: No engine for filetype: 'xlsx''
 

Я попытался переключиться на формат csv, но ошибка не исчезла. Не знаю, что происходит не так. Спасибо!

Комментарии:

1. Пожалуйста, предоставьте полную информацию об ошибке.

2. Есть ли у вас необходимые библиотеки для написания файла excel, такого как xlrd или openpyxl?

3. xlrd перестал поддерживать xlsx файлы. Интересно, это все? Какую версию Pandas и xlrd вы используете?

4. @It_is_Chris только что сделал

5. @Zev и альпарслан, может быть, глупый вопрос, но как мне проверить свои зависимости и их версии в записной книжке jupyter?

Ответ №1:

В строке arg = "r'Edited Tables/" list_of_tables[i] "_Table_New.xlsx'" у вас есть дополнительный апостроф в конце.

Измените это на:

 arg = r"Edited Tables/"   list_of_tables[i]   "_Table_New.xlsx"
 

Обратите внимание, что в сообщении об ошибке говорится ValueError: No engine for filetype: 'xlsx'' , что он не знает, как обрабатывать xlsx' файл, но его можно было бы использовать xlsx без завершающего апострофа.

У "r'Edited Tables/" этой части также есть аналогичная проблема.

pandas 2.0.0 was released yesterday and it’s causing one HRA test to break. The error is

for filename, func in [('target.csv', source_df.to_csv),
                       ('target.xls', source_df.to_excel),
                       ('target.xlsx', source_df.to_excel)]:
    full_filepath = os.path.join(self.workspace_dir, filename)
>   func(full_filepath, index=False)
...
ValueError: No engine for filetype: 'xls'

I couldn’t find this mentioned in the release notes, but it looks like they removed support for the .xls format (it’s been deprecated for a while, and was provided by another library that’s no longer maintained). We should accordingly remove the .xls test from HRA — if pandas isn’t supporting it, I doubt there’s much demand for this outdated format.

Also an opportunity to revisit whether we still want HRA to support excel files, since it’s the only model that does so.

Learning to create classes. I try to create a class that imports quotes from Yahoo and exports them to .xlsx and .csv files. The script developed initially as a function, operates correctly, however, the version I developed as a class, returns me an error that I do not understand. The class is this:

class ImportadorExportadorYahoo (object):
    start = "2000-1-4"   
    end = date.today()
def __init__(self, nombre, ticker, fichero_excel=None, fichero_csv=None): 
    #self.start = start
    #self.end = end
    self.nombre = nombre
    self.ticker = ticker
    self.fichero_excel = fichero_excel
    self.fichero_csv = fichero_csv

def actualizar(self):     
    df = pd_data.DataReader(ticker, "yahoo", self.start, self.end)
    print ("nCotizaciones ", nombre," n", df[:3])    
    df.to_excel (self.fichero_excel)   
    df.to_csv (self.fichero_csv)  

os.chdir("G:/Py_2019/Py_micartera_POO/Ficheros_Yahoo")

"""Nombres de columnas del fichero csv: "lista_nombres" y "lista_tickers" """
df = pd.read_csv("lista_valores.csv")
data = df[df["ID"] == "Y"]
for i in range(0,data.shape[0]):
nombre = data["nombres"][i]
ticker = data["tickers"][i]
fichero_excel = data["ficheros_xlsx"][i]
fichero_csv = data["ficheros_csv"][i]
obj = ImportadorExportadorYahoo(nombre, ticker, fichero_excel, fichero_csv)
obj.actualizar()

In this link
https://github.com/akitxu/Aprendiendo-GitHub

The notebook «Clase_ImportarExportar_Yahoo.ipynb» is accessible, and within the folder «Ficheros» is the file «lista_valores.csv»

The returned error is:

ValueError: No engine for filetype: 'csv'

What can be the cause? I’ll appreciate your help.

Indeed, there was an error in the file «list_valores.csv», but it only affects the name of the .csv file that is to be created in the export. The search in Yahoo makes it with the tickers of the «tickers» field of the list_valores.csv file. «dow_jons» is «^GSPC».
I check that with this ticker there’s no mistake running.

start = "2000-1-4"
end = date.today()
df = pd_data.DataReader("^GSPC", "yahoo", start, end)
df[:3]

However, the class still makes me the same mistake.

I’ve tried the spyder script and it’s devouring me the same mistake.

Понравилась статья? Поделить с друзьями:
  • Nice word for man
  • No duplicates found in excel
  • Nice word for life
  • No duplicate formula in excel
  • No developer tab in excel