MATLAB Answers


I'm trying to write a character in Excel using xlswrite but I am unable to do so.

Asked by S
on 24 Apr 2013
Latest activity Commented on by Walter Roberson
on 23 Jan 2016

the character is a=' ,OK| ,g' when i use xlswrite(file,a,sheet,range), the function writes a but with spaces. ie , O K | , g . Each alphabet is in a different cell. I want the entire string to come in a single cell. I used a variant xlswrite(file,{a},sheet,range) and the excel file doesn't change.

Please someone help.

Edit: I am executing these through command window: a=NPV_run{1} NPV_run is a 72x1 cell whose first element is ' ,OK| ,g'. Note this element is not the same as 'blank,OK|blank,g'. I compared the two strings and the two blank spaces correspond to a mismatch between the two strings.

I then used xlswrite(filename,a,sheet,range) and the result is blank , O K | blank , g each in a different cell. I also tried to use xlswrite(filename,{a},sheet,range), but in this case nothing is written and the cell remains blank.

Hope this was clear enough.


Is there a remote possibility that you have more than one excel-file with the same name, i.e. writing to one and checking the another?

on 25 Apr 2013

@isakon. No. There exists a single file with that name.

That has nothing to do with it. It's because it's a string, not a cell.


No products are associated with this question.

1 Answer

Answer by Image Analyst
on 25 Apr 2013
Edited by Image Analyst
on 25 Apr 2013
 Accepted answer

a must be a cell, not a string:

 a = {' ,OK| ,OK'};

For example, this works just fine:

ca = {' ,OK| ,OK'};
ca(2) = {'This is column 2 of ca'}; % Assign another cell.
ca{3} = 'This is column 3 of ca'; % Alternate way of specifying a cell.
sheet = 1;
range = 'B4'; % Wherever you want...
xlswrite('deleteme.xls', ca, sheet, range);


I have the same problem, I am do get the output in excel but data in written in different cells, each character goes to its own cell. I get the following warning " Warning: Could not start Excel server for export. XLSWRITE will attempt to write file in CSV format. > In xlswrite (line 174) In finalCode (line 62) " and it writes data in csv format. Below is the piece of my code. My output is a mixture of numbers and characters (car's license plate).

license_plate = results.Text

drvLicNum = randi([1000000 10000000],1,1) % Generating number for drivers license number drvStore = drvLicNum; string = license_plate + drvLicNum; fprintf('%s', string)

%Export to Excel option

%load license_plate.mat license_plate = license_plate(~isspace(license_plate)) %eliminate spaces in betwwen characters filename = 'C:\Users\Assignment5\Project\data.xlsx'; ca = {license_plate}; %A = [string]; %working xlswrite(filename,ca);

Evidently you don't have Excel installed, right? Or maybe a free/express version that doesn't allow ActiveX communication.

If it cannot start Excel through ActiveX, either because you are not on MS Windows or because Excel is not installed (or is not installed with the same architecture as MATLAB, e.g., x86 vs x64), then xlswrite() will use Basic mode, which writes csv files and cannot handle a mix of text and numbers.

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!