matlab 连续导入多个excel文件并分别保存变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 连续导入多个excel文件并分别保存变量相关的知识,希望对你有一定的参考价值。

我现在有n个excel文件,我想把他们导入到matlab里去,然后每个excel文件生成一个变量,然后将生成的n个变量分别保存成n个.mat文件,我弄了如下代码,可是不成功啊,求大大指导。
for i = 1:20
file_header = 'Device_';
file_number = num2str(i);
file_suffix = '_Volts.xlsx';
file_name = [file_header file_number file_suffix];
if (i<10)
filename = [file_header '0' file_number file_suffix];
else
file_name = [file_header file_number file_suffix];
end

devicei = importfile(file_name);
save('Devicei','devicei);
end
运行到导入命令的时候,如果我用device(i)=importfile(file_name), matlab会报错说

In an assignment A(I) = B, the number of elements in B and I must be the same.

如果我用devicei=importfile(file_name), 会生成一个cell,里面有全部的变量。。但不是分别的变量,怎么样把这些变量分离出来呢?

参考技术A 楼主不妨用xlsread试试
格式为:
[num,txt,raw] = xlsread(filename,sheet);

其中 num, txt和raw 分别是 数据,文本和未分类处理的所有信息。
filename是文件名,比如你的文件为 table1.xls,文件名写 'table1.xls',
sheet表示excel的第几个表格。追问

其实我的问题不在importfile上,是在如果我用device{i}=importfile(file_name),就会生成struct结构或者cell结构,不是我想要的变量名为device1到device n的多个变量。我想生成device 1 = importfile (file1),device2 = importfile(file2).....其中每个device都是一个变量,变量的内容则是xls文件file1,2,3,4...中的mxn矩阵

本回答被提问者和网友采纳
参考技术B 你的file_name是有问题的,你的本意应该是file_header,file_number,file_name这三个字符串的合并在一起组成file路径,但是你现在file_name = [file_header file_number file_suffix];就变成是一个由三个字符串组成的数组了。应该用file_name =strcat(file_header,file_number,file_suffix);
满意请采纳,不懂可追问,谢谢!
参考技术C filename 是一个字符串,你现在是字符数组,当然不对,你要用 strcat 函数才行。

使用 Python 导入 - 将多个 excel 文件导入数据框

【中文标题】使用 Python 导入 - 将多个 excel 文件导入数据框【英文标题】:Import using Python - multiple excel files into a dataframe 【发布时间】:2018-02-22 15:17:42 【问题描述】:

我想遍历一个目录并找到特定的 xlsx 文件,然后将它们分别放入单独的 pandas 数据框中。这里的问题是我还希望这些 excel 文件中的所有工作表都在数据框中。

下面是我实现的代码示例,我只需要添加逻辑来选择所有工作表:

import pandas as pd
from glob import glob

path = 'path_to_file'

files = glob(path + '/*file*.xlsx')

get_df = lambda f: pd.read_excel(f)

dodf = f: get_df(f) for f in files

dodf[files[2]] --- dictionary of dataframes 

【问题讨论】:

我已经创建了一个字典来访问每个数据帧。所以当前的方法应该没问题,即在字典中。 【参考方案1】:

如 Pandas 中的 this answer 所述,您仍然可以访问 ExcelFile 类,该类会加载文件并创建对象。

此对象有一个.sheet_names 属性,它为您提供当前文件中工作表名称的列表。

xl = pd.ExcelFile('foo.xls')
xl.sheet_names  # list of all sheet names

要实际处理特定工作表的导入,请在导入的 Excel 文件的对象上使用.parse(sheet_name)

xl.parse(sheet_name)  # read a specific sheet to DataFrame

对于您的代码,类似于:

get_df = lambda f: pd.ExcelFile(f)
dodf = f: get_df(f) for f in files

...为您提供dodf ExcelFile 对象的字典。

filename = 'yourfilehere.xlsx'
a_valid_sheet = dodf[filename].sheet_names[0] # First sheet
df = dodf[filename].parse(sheet_name)

【讨论】:

我不想手动输入文件名。有没有办法从我创建的字典 dodf 中获取它?我对 Python 完全陌生,所以我不知道它是如何工作的。 是的——但您需要将pd.read_excel(f) 更改为pd.ExcelFile(f)。完成后,每个对象都将具有 .sheet_names 属性,该属性是该文件中的工作表列表。 是的,我已经这样做了。但是,我必须单独将每个工作表解析到数据框中,对吗? @ManasJani 没错。但是您可以遍历 sheet_names 的列表来执行此操作,例如for sheet in your_xls_obj.sheetnames: df = your_xls_obj.parse(sheet)

以上是关于matlab 连续导入多个excel文件并分别保存变量的主要内容,如果未能解决你的问题,请参考以下文章

Matlab如何导入mat文件并查看其中的数据

如何将EXCEL里的大量数据导入并转化成MATLAB中的矩阵

将多个 csv 文件中的数据导入一个 Excel 工作表并计算平均值

MATLAB:如何将 fig 粘贴到 excel 中,然后保存并关闭 excel 文件?

使用 Python 导入 - 将多个 excel 文件导入数据框

Matlab如何导入excel数据