Matlab读写excel文件函数
(-06-10 21:33:44)
标签:
it
Matlab读写excel文件函数
Matlab读写excel文件函数:xlsread和xlswrite(转载)
在实验编程中产生了需要将matlab运行的试验结果写入
excel,从excel中读数据的要求,这样就需要用到matlab操作excel表格的相关函数:xlsfinfo,xlsread和
xlswrite。
我的应用实例:
对如下文件数据处理转化:test.txt[code]
================25-Jul- 10:07:25 ===============
jinkstop
H R S
T H R
S C H
R S M
H R S
N H R
S Q H
R S D
jinkstart
GGGY
-108.766778 172.092305
GGGT
-64.567515 132.922390
GGGE
-73.388772 -149.940032
GGGH
58.886619 -43.304309
GGAG
0.000000 0.000000
GGAP
0.000000 0.000000
GGAT
0.000000 0.000000
GGAM
-89.880662 -4.051511
GGAN
66.886988 28.233579
jinkstop
[/code]转存到test.xls的程序:[code]
function countResult(filename, xlsfile)
% 读取CSAResult.txt文件,统计到Excel表格中
% xlsRow为本文件写到excel文件excelResult.xls的起始行
fid = fopen(filename);
% Excel = actxserver('Excel.Application');
fRow = 0;
sheet = 1;
xlsRow = 1;
% 找出要用数据的第一行(jinkstart下面)
tline =strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
while feof(fid) == 0 & length(matches) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
end
seq = 'xxxx';
while feof(fid) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstop');
if length(matches) >
0%找到停止行标识,则开始再次寻找下面start处
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
while feof(fid) == 0 & length(matches) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
end
elseif length(tline) == 4
seq = tline;
elseif length(tline) ~= 0
% 开始将angle、seq写入excel表格
[token, rem] =
strtok(tline);%使用默认的空格分割字符串,第一个空格前在token里,剩下在rem里
M(1, 1) = {str2num(token)};
M(1, 2) = {str2num(rem)};
M(1, 3) = {seq};
if xlsRow > 60000
sheet = sheet + 1;
xlsRow = 1;
end
xlswrite(xlsfile, M, strcat('Sheet', num2str(sheet)), strcat('A',
num2str(xlsRow)));
xlsRow = xlsRow + 1;
end
end
fclose(fid);
[/code]
运行方式如下:
[code]countResult('test.txt', 'test.xls'); [/code]
结果text.xls中的结果如下:
-108.766778 172.092305 GGGY
-64.567515 132.92239 GGGT
-73.388772 -149.940032 GGGE
58.886619 -43.304309 GGGH
0 0 GGAG
0 0 GGAP
0 0 GGAT
-89.880662 -4.051511 GGAM
66.886988 28.233579 GGAN
参考文献:
matlab帮助文档
[url=/post.650879.html][b][color=#86aa42]将matlab求出的矩阵保存在Excel表格中[/color][/b][/url]
[url=/post.650879.html]/post.650879.html[/url]
jink 发表于 -8-10 12:50
程序改进:减少打开关闭excel次数,增加excel最大行限制处理
[code]
function countResult(filename, xlsfile)
% 读取CSAResult.txt文件,统计到Excel表格中
% xlsRow为本文件写到excel文件excelResult.xls的起始行
fid = fopen(filename);
% Excel = actxserver('Excel.Application');
sheet = 1;
xlsRow = 1;
% 找出要用数据的第一行(jinkstart下面)
tline =strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
while feof(fid) == 0 & length(matches) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
end
seq = 'xxxx';
mRow = 0;
while feof(fid) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstop');
if length(matches) >
0%找到停止行标识,则开始再次寻找下面start处
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
while feof(fid) == 0 & length(matches) == 0
tline = strtrim(fgetl(fid));
matches = findstr(tline, 'jinkstart');
end
elseif length(tline) == 4
seq = tline;
elseif length(tline) ~= 0
% 开始将angle、seq写入excel表格
[token, rem] =
strtok(tline);%使用默认的空格分割字符串,第一个空格前在token里,剩下在rem里
mRow = mRow + 1;
M(mRow, 1) = {str2num(token)};
M(mRow, 2) = {str2num(rem)};
M(mRow, 3) = {seq};
% 每次M到达500行才写入excel减少开关excel操作
if mRow >= 500
if (xlsRow + 500) > 60000
sheet = sheet + 1;
xlsRow = 1;
end
xlswrite(xlsfile, M, strcat('Sheet', num2str(sheet)), strcat('A',
num2str(xlsRow)));
mRow = 0;
xlsRow = xlsRow + 500;
M = {};
end
end
end
% 文件读写结束M可能不足500行,将剩余M写入excel
xlswrite(xlsfile, M, strcat('Sheet', num2str(sheet)), strcat('A',
num2str(xlsRow)));
fclose(fid);
return
[/code]
jink 发表于 -8-14 15:23
我遇到过的问题
>>
countResult('CSAResult.txt');
??? Error using ==> xlswrite
Error: Object returned error code: 0x800A03EC
Error in ==> countResult at 38
xlswrite('excelResult.xls', M,strcat('A',
num2str(xlsRow)));
——Matlab7.0中提供的可以省略工作表参数的使用方法,好像不对,我省略后,它将后面的表格range作为表明来使用。工作表参数可能不能省略。
>> countResult('CSAResult.txt',
1);
??? Invoke Error, Dispatch Exception:
Source: Microsoft Office Excel
Description:
“excelResult.xls”为只读。要保存当前工作簿的副本,请单击“确定”按钮,在“另存为”对话框中为副本指定一个名称。
Help File: D:\Program Files\Microsoft
Office\OFFICE11\2052\xlmain11.chm
Help Context ID: 0
Error in ==> countResult at 38
xlswrite('excelResult.xls', M,'Sheet1',
strcat('A', num2str(xlsRow)));
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。