본문 바로가기
Programming/Matlab, Octave, Scilab

Octave를 이용하여 Excel 사용하기

by 도파공 2022. 11. 11.
728x90
반응형

우선 Octave에 windows라는 package 가 설치되어 있어야 한다.

링크 : https://gnu-octave.github.io/packages/

 

GNU Octave - Packages

Extend GNU Octave's functionality by packages. Find many of them here.

gnu-octave.github.io

 

설치되어 있지 않다면 Octave의 command line에서 하기 내용을 입력한다.

pkg install "https://downloads.sourceforge.net/project/octave/Octave%20Forge%20Packages/Individual%20Package%20Releases/windows-1.6.3.tar.gz"

 

다음은 간단히 엑셀 파일을 읽어드린 후 몇몇 셀에 수치를 입력하고 저장 후 종료하는 예제이다.

clear
clc

pkg load windows

p_id = actxserver('Excel.Application');
wbs = p_id.workbooks;

pth = 'd:\works\octave\export.xlsm';

wb = wbs.Open(pth, 0, false);
wb.activate;

nCols = p_id.ActiveSheet.UsedRange.Columns.Count
nRows = p_id.ActiveSheet.UsedRange.Rows.Count

hSheets = p_id.ActiveWorkbook.Sheets;
hSheet1 = get(hSheets, 'Item', 1);

range1a = ['A' num2str(nRows+1) ':' 'L' num2str(nRows+1)];
range1b = ['M' num2str(nRows+1) ':' 'M' num2str(nRows+1)];
range1c = ['N' num2str(nRows+1) ':' 'AM' num2str(nRows+1)];
range2a = ['A' num2str(nRows+2) ':' 'L' num2str(nRows+2)];
range2b = ['M' num2str(nRows+2) ':' 'M' num2str(nRows+2)];
range2c = ['N' num2str(nRows+2) ':' 'AM' num2str(nRows+2)];

hActivesheetRange = get(p_id.ActiveSheet, 'Range', range1a);
hActivesheetRange.Value = '1.0';
hActivesheetRange = get(p_id.ActiveSheet, 'Range', range1b);
hActivesheetRange.Value = '2.0';
hActivesheetRange = get(p_id.ActiveSheet, 'Range', range1c);
hActivesheetRange.Value = '3.0';
hActivesheetRange = get(p_id.ActiveSheet, 'Range', range2a);
hActivesheetRange.Value = '4.0';
hActivesheetRange = get(p_id.ActiveSheet, 'Range', range2b);
hActivesheetRange.Value = '5.0';
hActivesheetRange = get(p_id.ActiveSheet, 'Range', range2c);
hActivesheetRange.Value = '6.0';

wb.save;
p_id.quit;

 

 

 

 

 

728x90
반응형

댓글