2017-05-04 8 views
0

먼저, 이전에 다른 주제에서 찾은 매우 좋은 답변에 대해 감사드립니다. 새로운 도전에 지금 MatLab : Excel COM Add-In을 사용하여 셀을 통해 동적 반복

:

나는 현재 matlab에있는 COM 추가 기능으로하고 있어요는, 즉, 나는 색상 속성을 엑셀 통합 문서를 읽고 추출하고 있습니다 :

excelapp = actxserver('Excel.Application'); %connect to excel 
workbook = excelapp.Workbooks.Open('Solutions.xls');   
worksheet = workbook.Sheets.Item(1);       
ColorValue_Solutions=worksheet.Range('N2').Interior.Color; 

을 지금, 나는 range A1에서 J222까지의 셀에 대해이 작업을 수행하고 싶습니다.이 경우, Range 속성을 순환계로 순환시키고 각 셀을 개별적으로 읽은 다음 색상을 꺼내야합니다. 예를 들면 :

Columns = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; 

for j = 1:length(Columns)   
    for i = 1:222 

worksheet.(char(strcat('Range(''',Columns(j), num2str(i), ''')'))).Interior.Color 

    end 
end 

이, 그러나, 오류가 발생합니다 :

Undefined function or variable 'Range('A1')'. 

것 같아요 문제가 포함 된 문자열로 문자열을 해석하는 조합에, 즉 범위 ('A1') .

도움을 주시면 감사하겠습니다.

답변

0

몇 시간 전에 나는 비슷한 질문을했습니다. Check it out, 아마도 도움이 될 것입니다.

다음 코드는 당신이 원하는 일을해야합니다

당신은 Interior.Color 속성이 먼저 CellInterior 개체에 액세스하는 다음, Cell 객체를 받고 마지막으로 Color 속성을 얻어서 모든 세포에서 추출하는 방법을 볼 수 있습니다 그 Interior 개체 중. Color 속성은 Microsoft에서 정의한 색상 정수입니다 (자세한 내용은 herehere).이 값을 매트릭스 (M)에 저장합니다. 지정된 셀 범위를 통해이 프로세스를 반복하기 위해 이미 수행 한 것처럼 중첩 루프를 사용합니다. 프로세스가 끝나면 M의 내용을 표시합니다.

excelapp = actxserver('Excel.Application'); % Start Excel as ActiveX server. 
workbook = excelapp.Workbooks.Open('Solutions.xls'); % Open Excel workbook. 
worksheet = workbook.Sheets.Item(1);   % Get the sheet object (sheet #1). 

ncols = 10;    % From column A to J. 
nrows = 222;   % From row 1 to 222. 
M(nrows, ncols) = 0; % Preallocate matrix M. 

for col = 1:ncols        % Loop through every column. 
    for row = 1:nrows       % Loop through every row. 
     cell = get(worksheet, 'Cells', row, col); % Get the cell object. 
     interior = cell.Interior;    % Get the interior object. 
     colorint = get(interior, 'Color');  % Get the color integer property. 
     M(row, col) = colorint;    % Store color integer in matrix M. 
    end 
end 

disp(M); % Display matrix M with the color integer information. 

끝나면 연결을 닫아야합니다. 당신은 그것을하는 방법을 배울 수 herehere.

+0

감사합니다. 그건 완벽하게 작동합니다. –