1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab读取文件xlsfinfo Matlab读写excel文件函数

matlab读取文件xlsfinfo Matlab读写excel文件函数

时间:2022-04-23 04:46:20

相关推荐

matlab读取文件xlsfinfo Matlab读写excel文件函数

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

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。