Matlab中使用Excel数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab中使用Excel資料收藏
% Open Excel, add workbook, change active worksheet,
% get/put array, save, and close
% First open an Excel Server
%打開一個Excel操作物件
Excel = actxserver('Excel.Application');
%使Excel物件可見,即打開Excel視窗,實際應用時設置其為不可見的set(Excel, 'Visible', 1);
% Insert a new workbook
%創建工作本組物件
Workbooks = Excel.Workbooks;
%添加一個工作本
Workbook = invoke(Workbooks, 'Add');
% Make the second sheet active
%獲取當前活躍工作本的表單組,一個工作本共有3個表單(sheets)Sheets = Excel.ActiveWorkBook.Sheets;
%獲取表單組中的一個表單
sheet2 = get(Sheets, 'Item', 2);
%啟動該表單
invoke(sheet2, 'Activate');
% Get a handle to the active sheet
%獲取當前活躍表單的控制碼
Activesheet = Excel.Activesheet;
% Put a MATLAB array into Excel
%向表單中寫入資料
A = [1 2; 3 4];
%設置寫到Excel中的範圍
ActivesheetRange = get(Activesheet,'Range','A1:B2');
%寫入
set(ActivesheetRange, 'Value', A);
% Get back a range. It will be a cell array,
% since the cell range can
% contain different types of data.
%讀會資料塊
Range = get(Activesheet, 'Range', 'A1:B2');
%獲取資料
B = Range.value;
% Convert to a double matrix. The cell array must contain only scalars.
%B現在是符合矩陣,將其轉換成數值矩陣
B = reshape([B{:}], size(B));
% Now save the workbook
%保存檔,可以寫絕對路徑,相對路徑總是保存在我的文件中
invoke(Workbook, 'SaveAs', 'myfile.xls');
% To avoid saving the workbook and being prompted to do so,
% uncomment the following code.
% Workbook.Saved = 1;
% invoke(Workbook, 'Close');
% Quit Excel
%退出Excel
invoke(Excel, 'Quit');
% End process
%結束Excel進程
delete(Excel);
function UserRange = ExcelRangeCalculate(data,begin)
% 計算資料矩陣所佔用的儲存格範圍
% UserRange = ExcelRangeCalculate(data,begin) 輸入參數data用來指定要寫入的
% 資料矩陣,begin用來指定寫入的初始位置(左上角位置)。
% Example:
% data = rand(5,3);
% UserRange = ExcelRangeCalculate(data,'A1')
%
if ~ischar(begin) || isempty(begin)
error('初始位置參數應為非空字串');
end
[m,n] = size(data);
begin = upper(begin);
Letter = begin(regexp(begin, '[A-Z]'));
id = begin(regexp(begin, '[0-9]'));
id = str2num(id);
if isempty(Letter)
Letter = 'A';
end
if isempty(id)
id = 1;
end
lastcol = dec2base27(base27dec(Letter)+n-1);
UserRange = [Letter,num2str(id),':',lastcol,num2str(id+m-1)];