楼主: hshly
49948 19

[问答] 请问mat文件转换为xls文件的方法,谢谢 [推广有奖]

11
Xaero 发表于 2011-7-2 23:02:58
1. Struct 格式不能直接保存,但是可以将其每一个field 保存为一个 sheet
2. 2003版本的xls文件只有256列,但是2007及更高版本的xlsx文件有更多列
3. 如果不一定保存为xls,可以保存为其他格式,例如csv等, 还可以保存到数据里面。
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

12
tulipsliu 在职认证  发表于 2011-7-2 23:39:22
如果是数据库,得建立数据库结构,还得用 querrybulder 建立起MATLAB与数据库的联系。
尤其是设置  ODBC  数据库驱动。
呵呵,
我看的是老版本的教材吧,记得是 256 列。那应该是2003版本的。

其他的再看看。

不知道发这个帖子的数据需要保密不,如果不需要,可以上传给我们看看,我们存储试试,就知道了。
劳动经济学

13
tulipsliu 在职认证  发表于 2011-7-3 15:16:01
我写了一个完整的脚本程序,可以贴上来。
因为没实际的数据集验证,我也不能保证程序是对的。使用MATLAB,合适地调整数据,管理数据,是使用MATLAB前,一个非常重要的事项。
你的数据结构内容我不了解,这个真的无法做,我做了一个大致的程序,其实你的错误提示语句说,要写入excel,最好是 数值型,cell类型,和 逻辑型。
程序里的 okay,就是xlswrithe 函数能返回的一个参数,这个是逻辑值,1-代表写入成功,0-代表写入失败。
程序如下,顺便将原文件的.txt文本上传为附件,可以根据你的数据,调整变量名后试下,因为我没数据测试,从编程时的提示看,没有打的语法硬伤,不过能通过测试不,需要通过数据带入检验,这个就是 debug 过程。
  1. %% 将 *.mat 格式的数据存储为 *.xls 格式的文件数据
  2. %   脚本文件名为: Inputdata2excel.m
  3. % 读入*.mat 数据
  4. a=load('mydata.mat'); % 数据格式为 structure
  5. %% 将结构的变量名转变为将用于存储数据的excel表格的sheetname
  6. % 设置sheetname
  7. sheetname=a.VarName; % sheetname 一定得确保是字符型
  8. % 将结构中的数据读出,一个是直接读出,也可以用 strct2cell,将结构转变为cell
  9. % 方法1: 直接独处结构的内容
  10. Datas=a.Var;
  11. % 方法2: 用cell
  12. tempCell=struct2cell(a);
  13. %% 这里主要用方法1 做转换存储
  14. % 为了便于将巨大的数据矩阵放入excle,比如本里的 4000*10000,将列缩小
  15. [outIter,inIter]=size(Datas);
  16. inIter=inIter./200;
  17. outIter=outIter./1000;
  18. for i=1:outIter
  19.     ObjectExcel={'ObjectExcel',num2str(outIter),'.xls'};
  20.     for s=1:initer
  21.         % 下一句中的数据行,列设置,[] 这个括号是可以不要的,是为了清晰数据花去而设定
  22.         tempData=Datas([(outIter-1)*1000+1:outIter*1000],[(inItet-1)*200+1:inIter*200]);
  23.         % 设置用余被eval调用的字符串
  24.         tempstr={'okay=','xlswrite(',ObjectExcel,',','tempData'',',sheetname,')'};
  25.         % 用evar
  26.         % 语句将字符串执行,okay=xlswrite('ObjecExcel_outIter.xls',tempData,'sheetname');
  27.         eval(tempstr);
  28.         %  用屏幕输出语句fprintf输出okay的逻辑值,值为:1 ,代表写excel文件成功
  29.         fprintf(1,'The data write to excel logical okay is: %c /n',okay);
  30.     end
  31. end
  32. %% 结束文件
  33. fprintf(1,'Excel 文件写入完毕')
复制代码

Inputdata2excel.txt
下载链接: https://bbs.pinggu.org/a-931472.html

1.33 KB

Inputdata2excel.txt

1.33 KB

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hshly + 1 + 1 + 1 谢谢
liuxin9023 + 1 分析的有道理

总评分: 学术水平 + 2  热心指数 + 1  信用等级 + 1   查看全部评分

劳动经济学

14
hshly 发表于 2011-7-5 07:15:02
多谢了,我试试看看

15
hshly 发表于 2011-7-5 19:08:33
我还是没有实现,因为数据不便上传,我的数据结构如下:
我的数据结构:
data<1*1 struct>
Field     Value     Min    Max
var1     <1*4000>
var2     <4000*10000>
var3     <1*10000>

多谢了

16
Xaero 发表于 2011-7-5 20:55:39
hshly 发表于 2011-7-5 19:08
我还是没有实现,因为数据不便上传,我的数据结构如下:
我的数据结构:
data
Field     Value     Min    Max
var1     
var2     
var3     

多谢了
先看下面的博文:

http://blog.macro2.org/2011-07/将struct格式的数据保存为xls文档.html



对应你的数据(data下面有几个fields)的代码是:

struct2xls(data,'data','mydata.xlsx');

注意要Excel 2007才行。
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

17
lustboy 发表于 2011-7-6 18:29:22
hehe,manmanxuexi.

18
lustboy 发表于 2011-7-6 18:31:02
hehe,manmanxuexi.

19
matlab-007 发表于 2014-11-28 11:08:13
使用xlsread导入,然后保存为xls文件。
希望能帮助到你,麻烦点击“有用”,谢谢!

20
kepu201101 发表于 2025-4-1 09:22:02

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 16:53