MATLAB Answers


how to convert a .txt file into a .xls file in matlab?

Asked by Cordelle on 18 Jun 2013
Latest activity Commented on by Guillaume
on 17 Mar 2017

I suspect that I can actually read the log file data directly into Matlab without conversion. It is just a comma separated variable format(.csv), I believe, and I think it should be accessible to some Matlab input routine.

However,I dont not know the matlab input routine; It would be very helpful if someone can enlighten me on the input routine

thanks in advance, Cordelle


Log in to comment.

3 Answers

Answer by Jan Simon
on 18 Jun 2013

This is not enough information to give a more explicit answer than:

  • Import the file by e.g. importdata or fopen / fscanf.
  • Export the data by xlswrite.

I suggest to add mire details, e.g. the file's contents by editing the original question (not as comment or answer).


When I imported the file using importdata this occured:

data: 3

    textdata: {863x4 cell}

what does this mean? and how can I convert the imported file into an excel file?

That means that data is a structure containg the field "textdata", and that "textdata" contains a cell array (each element of a cell array can be a different type of number, string, or even another array).



Log in to comment.

Answer by Shashank Prasanna on 18 Jun 2013

That means its a cell in a structure.

You can access data from structures:

and use

If you need editing in between you should do that.

If you are unfamiliar with cell and structures at all in MATLAB, I point you to


Error using load

Number of columns on line 3 of ASCII file


must be the same as previous lines.

How can i correct this issue? (I used the "Load" input routine)

Please do not post explanations like "I used the "Load" input routine", but the corresponding code. This will reduce misunderstandings. Thanks.

Log in to comment.

Answer by Harish TV on 17 Mar 2017

clear; clear all; fileip='filename.csv'; g=char(fileip); g=g(1:end-4) fileop=horzcat(g,'.xlsx') g=fileip(1:end-4); [~,~,F]=xlsread(fileip); F=cellstr(F); %delete the header rows (4 rows) F([1:4],:)=[]; for a=1:size(F,1); b=F(a,1); c=char(b); D(a,:)=strsplit(c,','); end xlswrite(fileop,D); disp(['--------------Process complete---------------------']);

  1 Comment

There's a {}Format button to format code as such. That would make your post more readable.

g = char(fileip);

is a no-op. fileip is already char. In any case,

[path, basename] = fileparts(fileip);
fileop = fullfile(path, [basename, '.xlsx']);

would be a lot simple and safer.

F = cellstr(F);

is also a no-op. F is already a cell array. Same for

c = char(b); %b is already char.

In any case, the code is not going to work. It only writes the first column of the csv file. (hint: xlsread already does the splitting at the comma)

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!