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
ospreyosprey
6985 silver badges15 bronze badges
simply try
df.to_csv("output.csv")
answered Jan 2, 2021 at 8:57
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-GitHubThe 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.