Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否使用pandas.io.parsers.ExcelFile将excel文件从StringIO缓冲区读取到数据帧?_Python_Excel_Pandas_Openpyxl_Stringio - Fatal编程技术网

Python 是否使用pandas.io.parsers.ExcelFile将excel文件从StringIO缓冲区读取到数据帧?

Python 是否使用pandas.io.parsers.ExcelFile将excel文件从StringIO缓冲区读取到数据帧?,python,excel,pandas,openpyxl,stringio,Python,Excel,Pandas,Openpyxl,Stringio,我想将字符串缓冲区读入数据帧。这样做的一个好方法似乎是使用pandas的ExcelFile功能。我试着做如下事情: from pandas import ExcelFile as excel_handler excel_data = excel_handler(StringIO(file_stream.read()).getvalue()) 从那时起,我想可以使用ExcelFile.parse() 这会产生以下错误: <class 'openpyxl.shared.exc.Invalid

我想将字符串缓冲区读入数据帧。这样做的一个好方法似乎是使用pandas的ExcelFile功能。我试着做如下事情:

from pandas import ExcelFile as excel_handler
excel_data = excel_handler(StringIO(file_stream.read()).getvalue())
从那时起,我想可以使用ExcelFile.parse()

这会产生以下错误:

<class 'openpyxl.shared.exc.InvalidFileException'> [Errno 2] No such
file or directory: '
[Errno 2]没有这样的
文件或目录:'

关于如何从缓冲区读取文件有什么想法吗?

已修复。我之前的代码中遗漏了调用文件_stream.read()的一部分。因此,在调用ExcelFile时,向其传递了一个空字符串,从而导致错误。需要删除getvalue()。下面是它应该如何进行:

from pandas import ExcelFile
excel_data = ExcelFile(StringIO(file_stream.read())
dataframe = excel_data.parse(excel_data.sheet_names[-1])

固定的。我之前的代码中遗漏了调用文件_stream.read()的一部分。因此,在调用ExcelFile时,向其传递了一个空字符串,从而导致错误。需要删除getvalue()。下面是它应该如何进行:

from pandas import ExcelFile
excel_data = ExcelFile(StringIO(file_stream.read())
dataframe = excel_data.parse(excel_data.sheet_names[-1])

什么是文件流?更重要的是,为什么不将其用作
ExcelFile('path/of/excel/file')
ExcelFile(file)
…它在web2py框架内。在上下文中,创建缓冲区比指定文件路径更容易。我验证了StringIO(…)缓冲区按预期工作(即,在xlrd模块中使用它打开excel工作簿时没有问题)。您能不能只传递缓冲区?这不是我在上面代码中所做的吗?还是要删除getvalue()?这会产生一个错误:强制使用Unicode:need string或buffer,\u io.BytesIO found关于
ExcelFile(file\u stream)
?什么是file\u stream?更重要的是,为什么不将其用作
ExcelFile('path/of/excel/file')
ExcelFile(file)
…它在web2py框架内。在上下文中,创建缓冲区比指定文件路径更容易。我验证了StringIO(…)缓冲区按预期工作(即,在xlrd模块中使用它打开excel工作簿时没有问题)。您能不能只传递缓冲区?这不是我在上面代码中所做的吗?还是要删除getvalue()?这会产生一个错误:强制使用Unicode:need string或buffer,\u io.BytesIO found关于
ExcelFile(file\u stream)
。read
返回字节。因此,您可以使用
BytesIO
excel\u data=ExcelFile(BytesIO(file\u stream.read())
.read
返回字节。因此,您可以使用
BytesIO
excel\u data=ExcelFile(BytesIO(file\u stream.read())