关于将matlab计算得到的数据输入excel中的问题。
经过大家的指导,我已经学会了如何将excel数据库中的数据倒入matlab中了,可是我现在想知道如何将已经算好的matlab数值放入存放原始数据的excel文件中的某个确定列中。看到前面的帖子有讲道用加入语句”wk1write('datas',S);“。可是我运行却在excel中得不到相应的数据
请问怎么解决?
是不是还有别的方法?
非常感谢!!
[ 本帖最后由 lxq 于 2006-11-22 21:30 编辑 ]
关于将matlab计算得到的数据输入excel中的问题
好象可以先复制为.txt文件,再粘贴到excel中. 可不可以通过语句,直接将数据倒入excel中。如果是纯数字
那么用xlswrite,具体用法可以参考matlab 的help还可以用工具箱Excel Link ,有问题再交流 谢谢楼上,用xlswrite我已经实现了.
顺便问一下:用xlswrite不能把多项式传到excel里阿!
请问 什么语句可以使多项式倒入excel
谢谢 楼主,能不能把如何将excel数据库中的数据倒入matlab中和如何将已经算好的matlab数值放入excel文件中的某个确定列中的m文件上传上来,让大家学习一下呢?谢谢 数据太大了不可以吧。
上次就遇到这个问题,就是因为数据太大不能写进去。也不知道高手还有什么妙招!
[ 本帖最后由 ChaChing 于 2010-4-3 01:07 编辑 ] 我倒入数据用的是c=xlsread('tong.xls');
导出数据用的是xlswrite(‘文件位子和名称’,矩阵名,'excel的页码','第几行第几列');
例如:xlswrite('d:\Program Files\MATLAB71\work\tong.xls',erro_y','sheet3','C2');
这里想请问各位:怎样将一个多项式倒入excel中
用xlswrite('d:\Program Files\MATLAB71\work\tong.xls',erro_y','sheet3','C2');倒入后就会在excel中看到多项式的每一数字就占用excel一行,这样一个6项的多项式要占用很多行数,多项式看的很分散,请问个位高手有什么好的方法吗?
怎样能将几个汉字,写到excel里的一个单元格里。例如:将‘误差结果’这几个字,写到A2里。
我用了xlswrite('d:\Program Files\MATLAB71\work\tong.xls',aa,'sheet3','A2');可是得到的结果却是,A2,B2,C2,D2里 每个格里一个汉字,要怎样解决???
牛人们,帮帮忙阿!!
[ 本帖最后由 ChaChing 于 2010-4-4 19:02 编辑 ] 和上面的问题一模一样
aa=cell(1);
aa{1}='误差结果';
xlswrite(''d:\Program Files\MATLAB71\work\tong.xls',aa,'sheet3','A2');
在帖子http://forum.vibunion.com/thread-28753-1-1.html中的4楼已经作了回复 原帖由 ydliu_zn 于 2006-10-18 15:48 发表
楼主,能不能把如何将excel数据库中的数据倒入matlab中和如何将已经算好的matlab数值放入excel文件中的某个确定列中的m文件上传上来,让大家学习一下呢?谢谢
如果你用的是7.0或以上版本则matlab已经自带了,如果是7.0以下版本可以用下面的函数
function =xlswrite(file,data,sheet,range)
% XLSWRITE Stores numeric array or cell array in Excel workbook.
% =XLSWRITE(FILE,ARRAY,SHEET,RANGE) writes ARRAY to the Excel
% workbook, FILE, into the area, RANGE in the worksheet specified in SHEET.
% FILE and ARRAY must be specified. If either FILE or ARRAY is empty, a
% error is thrown and XLSWRITE terminates. The first worksheet of the
% workbook is the default. If SHEET does not exist, a new sheet is added at
% the end of the worksheet collection. If SHEET is an index larger than the
% number of worksheets, new sheets are appended until the number of worksheets
% in the workbook equals SHEET. The size definedby theRANGE should fit the
% size of ARRAY or contain only the first cell, e.g. 'A2'. If RANGE is larger
% than the size of ARRAY, Excel will fill the remainder of the region with
% #N/A. If RANGE is smaller than the size of ARRAY, only the sub-array that
% fits into RANGE will be written to FILE. The success of the operation is
% returned in SUCCESS and any accompanying message, in MESSAGE. On error,
% MESSAGE shall be a struct, containing the error message and message ID.
% See NOTE 1.
%
% =XLSWRITE(FILE,ARRAY) writes ARRAY to the Excel workbook,
% FILE, starting at cell A1 of the first worksheet. The return values are as
% for the above example.
%
% XLSWRITE ARRAY FILE, is the command line version of the above example.
%
% INPUT PARAMETERS:
% file: string defining the workbook file to write to.
% Default directory is pwd; default extension 'xls'.
% array:m x n numeric array or cell array.
% sheet:string defining worksheet name;
% double, defining worksheet index.
% range:string defining data region in worksheet, using the Excel
% 'A1' notation.
%
% RETURN PARAMETERS:
% SUCCESS: logical scalar.
% MESSAGE: struct containing message field and message_id field.
%
% EXAMPLES:
%
% SUCCESS = XLSWRITE('c:\matlab\work\myworkbook.xls',A,'A2:C4') will write A to
% the workbook file, myworkbook.xls, and attempt to fit the elements of A into
% the rectangular worksheet region, A2:C4. On success, SUCCESS will contain true,
% while on failure, SUCCESS will contain false.
%
% NOTE 1: The above functionality depends upon Excel as a COM server. In
% absence of Excel, ARRAY shall be written as a text file in CSV format. In
% this mode, the SHEET and RANGE arguments shall be ignored.
%
% See also XLSREAD, WK1WRITE, CSVWRITE.
%
% JP Barnard
% Copyright 1984-2005 The MathWorks, Inc.
% $Revision: 1.1.6.8 $$Date: 2005/06/21 19:35:45 $
%==============================================================================
% Set default values.
Sheet1 = 1;
if nargin < 3
sheet = Sheet1;
range = '';
elseif nargin < 4
range = '';
end
if nargout > 0
success = true;
message = struct('message',{''},'identifier',{''});
end
% Handle input.
try
% handle requested Excel workbook filename.
if ~isempty(file)
if ~ischar(file)
error('MATLAB:xlswrite:InputClass','Filename must be a string');
end
% check for wildcards in filename
if any(findstr('*', file))
error('MATLAB:xlswrite:FileName', 'Filename must not contain *');
end
=fileparts(file);
if isempty(ext) % add default Excel extension;
ext = '.xls';
end
file = abspath(fullfile(Directory,));
= fileattrib(file);
if a1 && ~(a2.UserWrite == 1)
error('MATLAB:xlswrite:FileReadOnly', 'File can not be read only.');
end
else % get workbook filename.
error('MATLAB:xlswrite:EmptyFileName','Filename is empty.');
end
% Check for empty input data
if isempty(data)
error('MATLAB:xlswrite:EmptyInput','Input array is empty.');
end
% Check for N-D array input data
if ndims(data)>2
error('MATLAB:xlswrite:InputDimension',...
'Dimension of input array cannot be higher than two.');
end
% Check class of input data
if ~(iscell(data) || isnumeric(data) || ischar(data)) && ~islogical(data)
error('MATLAB:xlswrite:InputClass',...
'Input data must be a numeric, cell, or logical array.');
end
% convert input to cell array of data.
if iscell(data)
A=data;
else
A=num2cell(data);
end
if nargin > 2
% Verify class of sheet parameter.
if ~(ischar(sheet) || (isnumeric(sheet) && sheet > 0))
error('MATLAB:xlswrite:InputClass',...
'Sheet argument must a string or a whole number greater than 0.');
end
if isempty(sheet)
sheet = Sheet1;
end
% parse REGION into sheet and range.
% Parse sheet and range strings.
if ischar(sheet) && ~isempty(strfind(sheet,':'))
range = sheet; % only range was specified.
sheet = Sheet1;% Use default sheet.
elseif ~ischar(range)
error('MATLAB:xlswrite:InputClass',...
'Range argument must a string of Excel A1 notation.');
end
end
catch
if ~isempty(nargchk(2,4,nargin))
error('MATLAB:xlswrite:InputArguments',nargchk(2,4,nargin));
elseif nargout == 0
rethrow(lasterror); % Display last error.
else
success = false;
message = lasterror; % Return last error.
end
return;
end
%------------------------------------------------------------------------------
% Attempt to start Excel as ActiveX server.
try
Excel = actxserver('Excel.Application');
catch
warning('MATLAB:xlswrite:NoCOMServer',...
['Could not start Excel server for export.\n' ...
'XLSWRITE attempts to file in CSV format.']);
if nargout > 0
= lastwarn;
end
% write data as CSV file, that is, comma delimited.
file = regexprep(file,'(\.xls)$','.csv'); % change extention to 'csv'.
try
dlmwrite(file,data,','); % write data.
catch
= lasterror;
erroridentifier = 'MATLAB:xlswrite:dlmwrite';
errormessage = ['An error occurred on data export in CSV format.\n',...
last_error.message];
if nargout == 0
% Throw error.
error(erroridentifier,errormessage);
else
success = false;
message.message = sprintf(errormessage);
message.identifier = erroridentifier;
end
end
return;
end
%------------------------------------------------------------------------------
try
% Construct range string
if isempty(strfind(range,':'))
% Range was partly specified or not at all. Calculate range.
= size(A);
range = calcrange(range,m,n);
end
catch
if nargout == 0
rethrow(lasterror); % Display last error.
else
success = false;
message = lasterror; % Return last error.
end
return;
end
%------------------------------------------------------------------------------
try
if ~exist(file,'file')
% Create new workbook.
%This is in place because in the presence of a Google Desktop
%Search installation, calling Add, and then SaveAs after adding data,
%to create a new Excel file, will leave an Excel process hanging.
%This workaround prevents it from happening, by creating a blank file,
%and saving it.It can then be opened with Open.
ExcelWorkbook = Excel.workbooks.Add;
ExcelWorkbook.SaveAs(file,1);
ExcelWorkbook.Close(false);
end
%Open file
ExcelWorkbook = Excel.workbooks.Open(file);
try % select region.
% Activate indicated worksheet.
message = activate_sheet(Excel,sheet);
% Select range in worksheet.
Select(Range(Excel,sprintf('%s',range)));
catch % Throw data range error.
error('MATLAB:xlswrite:SelectDataRange',lasterr);
end
% Export data to selected region.
set(Excel.selection,'Value',A);
ExcelWorkbook.Save
ExcelWorkbook.Close(false)% Close Excel workbook.
Excel.Quit;
catch
try
ExcelWorkbook.Close(false); % Close Excel workbook.
end
Excel.Quit;
delete(Excel); % Terminate Excel server.
if nargout == 0
rethrow(lasterror); % Display last error.
else
success = false;
message = lasterror; % Return last error.
end
end
%--------------------------------------------------------------------------
function message = activate_sheet(Excel,Sheet)
% Activate specified worksheet in workbook.
% Initialise worksheet object
WorkSheets = Excel.sheets;
message = struct('message',{''},'identifier',{''});
% Get name of specified worksheet from workbook
try
TargetSheet = get(WorkSheets,'item',Sheet);
catch
% Worksheet does not exist. Add worksheet.
TargetSheet = addsheet(WorkSheets,Sheet);
warning('MATLAB:xlswrite:AddSheet','Added specified worksheet.');
if nargout > 0
= lastwarn;
end
end
% activate worksheet
Activate(TargetSheet);
%------------------------------------------------------------------------------
function newsheet = addsheet(WorkSheets,Sheet)
% Add new worksheet, Sheet into worsheet collection, WorkSheets.
if isnumeric(Sheet)
% iteratively add worksheet by index until number of sheets == Sheet.
while WorkSheets.Count < Sheet
% find last sheet in worksheet collection
lastsheet = WorkSheets.Item(WorkSheets.Count);
newsheet = WorkSheets.Add([],lastsheet);
end
else
% add worksheet by name.
% find last sheet in worksheet collection
lastsheet = WorkSheets.Item(WorkSheets.Count);
newsheet = WorkSheets.Add([],lastsheet);
end
% If Sheet is a string, rename new sheet to this string.
if ischar(Sheet)
set(newsheet,'Name',Sheet);
end
%------------------------------------------------------------------------------
function =abspath(partialpath)
% parse partial path into path parts
= fileparts(partialpath);
% no path qualification is present in partial path; assume parent is pwd, except
% when path string starts with '~' or is identical to '~'.
if isempty(pathname) && isempty(strmatch('~',partialpath))
Directory = pwd;
elseif isempty(regexp(partialpath,'(.:|\\\\)')) && ...
isempty(strmatch('/',partialpath)) && ...
isempty(strmatch('~',partialpath));
% path did not start with any of drive name, UNC path or '~'.
Directory = ;
else
% path content present in partial path; assume relative to current directory,
% or absolute.
Directory = pathname;
end
% construct absulute filename
absolutepath = fullfile(Directory,);
%------------------------------------------------------------------------------
function range = calcrange(range,m,n)
% Calculate full target range, in Excel A1 notation, to include array of size
% m x n
range = upper(range);
cols = isletter(range);
rows = ~cols;
% Construct first row.
if ~any(rows)
firstrow = 1; % Default row.
else
firstrow = str2double(range(rows)); % from range input.
end
% Construct first column.
if ~any(cols)
firstcol = 'A'; % Default column.
else
firstcol = range(cols); % from range input.
end
try
lastrow = num2str(firstrow+m-1); % Construct last row as a string.
firstrow = num2str(firstrow); % Convert first row to string image.
lastcol = dec2base27(base27dec(firstcol)+n-1); % Construct last column.
range = ; % Final range string.
catch
error('MATLAB:xlswrite:CalculateRange',...
'Data range must be between A1 and IV65536.');
end
%------------------------------------------------------------------------------
function s = dec2base27(d)
% DEC2BASE27(D) returns the representation of D as a string in base 27,
% expressed as 'A'..'Z', 'AA','AB'...'AZ', until 'IV'. Note, there is no zero
% digit, so strictly we have hybrid base26, base27 number system.D must be a
% negative integer bigger than 0 and smaller than 2^52, which is the maximum
% number of columns in an Excel worksheet.
%
% Examples
% dec2base(1) returns 'A'
% dec2base(26) returns 'Z'
% dec2base(27) returns 'AA'
%-----------------------------------------------------------------------------
b = 26;
symbols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
d = d(:);
if d ~= floor(d) | any(d < 0) | any(d > 1/eps)
error('MATLAB:xlswrite:Dec2BaseInput',...
'D must be an integer, 0 <= D <= 2^52.');
end
% find the number of columns in new base
n = max(1,round(log2(max(d)+1)/log2(b)));
while any(b.^n <= d)
n = n + 1;
end
% set b^0 column
s(:,n) = rem(d,b);
while n > 1 && any(d)
if s(:,n) == 0
s(:,n) = b;
end
if d > b
% after the carry-over to the b^(n+1) column
if s(:,n) == b
% for the b^n digit at b, set b^(n+1) digit to b
s(:,n-1) = floor(d/b)-1;
else
% set the b^(n+1) digit to the new value after the last carry-over.
s(:,n-1) = rem(floor(d/b),b);
end
else
s(:,n-1) = []; % remove b^(n+1) digit.
end
n = n - 1;
end
s = symbols(s);
%------------------------------------------------------------------------------
function d = base27dec(s)
% BASE27DEC(S) returns the decimal of string S which represents a number in
% base 27, expressed as 'A'..'Z', 'AA','AB'...'AZ', until 'IV'. Note, there is
% no zero so strictly we have hybrid base26, base27 number system.
%
% Examples
% base27dec('A') returns 1
% base27dec('Z') returns 26
% base27dec('IV') returns 256
%-----------------------------------------------------------------------------
d = 0;
b = 26;
n = numel(s);
for i = n:-1:1
d = d+(s(i)-'A'+1)*(b.^(n-i));
end
%------------------------------------------------------------------------------- 原帖由 ppdd 于 2006-10-18 16:24 发表
上次就遇到这个问题,就是因为数据太大不能写进去。也不知道高手还有什么妙招!
没试过,不过应该可以通过分批写入的方式完成 happy教授真是个高手啊,谢谢 使用通过,谢谢HAPPY. 我想问一下上面的高手,excel表里的字符变量怎么读入matlab里面呢,我在用matlab的统计工具,用决策树对数据分类,生成树。可是总是提示我变量错误,我也不知道怎么回事,请指教,谢谢。 原帖由 lpwy2005 于 2006-10-21 21:37 发表
使用通过,谢谢HAPPY.
我用的是6.0.烤入这个xlswrite这个函数之后,有很多不通的地方,不知是怎么回事
88的&&~这个不认,还有107的||两竖也不认
?? Error: File: F:\matlab\work\xlswrite.m Line: 107 Column: 23
")" expected, "identifier" found.
是怎么回事呢
页:
[1]
2