connect05.gms : Excel용 단순 연결 예

설명

이 모델은 메가 슬롯 Connect를 사용하여 Excel을 읽고 씁니다.
Excel이 설치된 Windows에서는 출력 시트가 병합됩니다.
입력 통합 문서로 다시 돌아갑니다.

기고자: Michael Bussieck, 2022년 9월

카테고리 : 메가 슬롯 데이터 유틸리티 라이브러리


메인 파일 : connect05.gms 다음을 포함합니다: connect05.gms

$title 'Excel용 단순 연결 예' (CONNECT05,SEQ=148)

$onText
이 모델은 메가 슬롯 Connect를 사용하여 Excel을 읽고 씁니다.
Excel이 설치된 Windows에서는 출력 시트가 병합됩니다.
입력 통합 문서로 다시 돌아갑니다.

기고자: Michael Bussieck, 2022년 9월
$offText

i / i1*i3 / 설정; 별칭(i,j,k);
테이블 a(i,j) '원래 행렬'
      i1 i2 i3
나는1 1 2 3
나는2 1 3 4
나는3 1 4 3
;
$onEmbeddedCode 연결:
- 메가 슬롯리더:
    기호:
      - 이름 : a
- 엑셀작성기:
    파일: input.xlsx
    기호:
      - 이름 : a
$offEmbeddedCode      

$onMultiR
$clear 나는 a 

$onEmbeddedCode 연결:
- 엑셀리더:
    파일: input.xlsx
    기호:
      - 이름 : a
- 프로젝션:
    이름: a(i,j)
    새로운 이름: i(i)
    자산 세트: 참
- 메가 슬롯작성기:
    기호: 모두
    중복 레코드: 첫 번째
$offEmbeddedCode 나는

매개변수
  inva(i,j) 'a의 역수'
  chk(i,j) '제품 a * inva 확인'
  ;

ExecuteTool.checkErrorLevel 'linalg.invert i a inva';
* 기호 inva는 ExecutionTool.checkErrorLevel에 의해 암시적으로 로드되었습니다. 컴파일러
* 다음 줄의 명령은 할당되지 않은 기호에 대한 오류를 억제합니다.
$onImplicitAssign

임베디드 코드 연결:
- 메가 슬롯리더:
    기호:
      - 이름 : 인바
- 엑셀작성기:
    파일: 출력.xlsx
    기호:
      - 이름 : 인바
endEmbeddedCode

스칼라 mergedRead /0/;
ExecuteTool 'win32.msappavail Excel';
mergedRead$(errorLevel=0) = 1;

if(병합읽기,
    ExecuteTool.checkErrorLevel 'win32.excelMerge 출력.xlsx 입력.xlsx';
    임베디드 코드 연결:
    - 엑셀리더:
        파일: input.xlsx
        기호:
          - 이름 : a
          - 이름 : 인바
    - 메가 슬롯작성기:
        기호: 모두
    endEmbeddedCode 인바
그렇지 않으면
    임베디드 코드 연결:
    - 엑셀리더:
        파일: input.xlsx
        기호:
          - 이름 : a
    - 엑셀리더:
        파일: 출력.xlsx
        기호:
          - 이름 : 인바
    - 메가 슬롯작성기:
        기호: 모두
    endEmbeddedCode 인바
);

chk(i,j) = sumk, a(i,k)*inva(k,j);
chk(i,j) = round(chk(i,j),15);
a,inva,chk를 표시합니다.
chk(i,i) = chk(i,i) - 1;
abort$[card(chk)] 'a * ainv <> ID';