설명
표준 전송 모델을 예시로 사용하세요. 먼저 GAMSLIB를 사용하여 현재 버전의 복사본을 검색합니다. 디렉토리:
카테고리 : 슬롯 게임 데이터 유틸리티 라이브러리
메인 파일 : tompivot.gms 포함: tompivot.gms
$title Excel을 사용한 보고서 생성을 보여주는 Tom Rutherford의 작은 슬롯 게임 프로그램
* 표준 전송 모델을 예시로 사용합니다.
* GAMSLIB를 사용하여 현재 버전의 복사본을 검색하는 것으로 시작합니다.
* 디렉토리:
$callTool win32.msappavail Excel
$if errorlevel 1 $abort.noError "사용 가능한 Excel이 없습니다."
$call 'gamslib -q trnsport'
* 라이브러리 모델을 포함합니다. 이는 모델을 정의하고
* 초기 해결 방법을 제공합니다.
$include trnsport
* 참조 용액을 저장할 매개변수를 생성합니다.
* 우리는 이 솔루션을 참조 지점으로 사용합니다.
* 정책 개입으로 인한 변화를 평가합니다.
매개변수 x0(i,j) 벤치마크 거래 흐름;
x0(i,j) = x.l(i,j);
* 계산할 몇 가지 시나리오를 선언합니다.
scn /0,50,100,150,200,250,300/을 설정합니다.
* 백분율 변화를 계산하는 매크로를 정의하십시오.
$macro pct(x0,xscn) ((100*(xscn/x0-1))$(x0>0))
* 변경사항에 라벨을 지정하려면 다음을 추가하세요.
* 제로 베이스:
* (+inf)$(x0=0 및 xscn>0) + (-inf)$(x0=0 및 xscn<0))
* 모델 결과를 저장할 매개변수를 선언합니다.
* 더 복잡한 모델에서는 이러한 항목이 많이 있을 수 있습니다.
* 매개변수.
매개변수 보고서(*,*,i,j) 요약 보고서;
* "보고 서브루틴"을 생성합니다.
* $echov 구문을 사용하면 %1을(를) 쓸 수 있습니다.
* 확장하지 않은 파일입니다.
* 스크래치 디렉토리에 서브루틴을 저장합니다.
* ".scr" 접미사가 붙어서 삭제됩니다.
* 슬롯 게임 작업을 종료합니다.
$onEchoV >%슬롯 게임scrdir%report.%슬롯 게임scrext%
보고서(%1,"lvl",i,j) = x.l(i,j);
보고서(%1,"%",i,j) = pct(x0(i,j),x.l(i,j));
$offEcho
* 계산 및 보고를 통해 시나리오를 반복합니다.
* 더 복잡한 모델이 더 잘 처리될 수 있습니다.
* 개별 .gdx 파일에 저장된 출력으로 하나씩.
옵션 solPrint=off;
옵션 제한=0;
옵션 limcol=0;
루프(scn,
* 시나리오 정책 할당 - 상한
* 시애틀에서 시카고로 가는 흐름:
X.UP("시애틀","시카고") = scn.val;
z 를 최소화하는 lp를 사용하여 전송을 해결합니다.
* 보고서 코드를 서브루틴으로 사용하십시오.
$batInclude "%슬롯 게임scrdir%report.%슬롯 게임scrext%" scn
);
* 언로드 시나리오 결과로 GDX 파일이 생성됩니다.
Execute_unload 'pivotdata.gdx',report;
* xlsx 출력 디렉터리가 이미 존재하는 경우
* 보고서 데이터를 해당 디렉터리의 모든 XLSX 파일로 피벗합니다.
$ifThen 존재 '.\xlsx\nul'
'for %F in (.\xlsx\*.xlsx) do (gdxxrw i=pivotdata.gdx o=.\xlsx\%~nF.xlsx par=report rng=PivotData!a2 cdim=0 Trace=0)'을 실행합니다.
$else
* xlsx 출력 디렉터리가 없으면 디렉터리를 만들고 덤프합니다.
* 새 보고서 파일에 데이터를 보고합니다.
'mkdir .\xlsx'를 실행합니다.
'gdxxrw i=pivotdata.gdx o=.\xlsx\report.xlsx par=report rng=PivotData!a2 cdim=0 Trace=0'을 실행합니다.
$endIf
$onText
여기서는 표준 형식인 XLSX Excel 파일 형식을 사용합니다.
Excel 2007. 이 형식을 사용하면 얻을 수 있는 중요한 이점은 다음과 같습니다.
개별 행 수의 상한이 훨씬 더 큽니다.
워크시트(~150만). 이는 피벗 보고서 테이블에 많은 도움이 됩니다.
많은 키 또는 많은 시나리오가 있습니다.
"for %F in (xlsx\*.xlsx) do ()" DOS 문의 유용성은 다음과 같습니다.
즉시 밝혀지지는 않습니다. 이 문은 동일한 GDXXRW를 적용합니다.
xlsx 디렉토리의 모든 워크시트로의 데이터 전송은 매우
피벗 보고서로 작업하고 보고서를 생성한 경우 도움이 됩니다.
더 많은 보고서 테이블이나 차트. 이 구문을 사용하면 업데이트할 수 있습니다.
모델과 관련된 모든 보고서 파일이 자동으로 생성됩니다.
이 접근 방식의 중요한 장점은 다음과 같습니다.
모델에 결함이 있어 모든 사례를 다시 실행해야 한다는 것을 알게 되었습니다.
그러면 이전 편집 내용을 잃을 필요가 없습니다. 당신은 함께 일할 수 있습니다
Excel로 보고서를 원하는 만큼 피봇하고 원하는 만큼 저장하세요.
보고서 디렉터리에 파일을 저장하고 매번 다시 로드하도록 함
모델을 다시 실행합니다.
추신. 고급 Excel 사용자는 피벗 테이블을 설정할 수 있다는 것을 알고 있을 것입니다.
피벗 테이블 캐시를 자동으로 다시 로드하도록 요청하는 스위치
통합 문서가 열릴 때마다. 아아, 엑셀에서 이 옵션을 설정하면,
통합 문서로 데이터를 이동하려고 하면 GDXXRW가 충돌합니다. 누가 알겠는가,
아마도 이 문제는 GDXXRW의 향후 버전에서 수정될 수 있을까요?
조달청. GDXXRW가 전송되는 방식과 관련하여 큰 성가심이 있습니다.
정수 레이블. 피벗 테이블에서 행을 정렬하려면
수치적으로는 A열의 레이블을 변환해야 합니다.
PivotData 워크시트를 숫자 형식으로 변환합니다. 열 제목을 클릭하세요.
(A) 노란색 상자가 보이는 동안 Shift 키를 누른 상태에서
열쇠. 그런 다음 "숫자로 변환"을 클릭하십시오. 이것은 정말 고통입니다. 아마도
누군가 이 작업을 자동으로 수행하는 방법을 알려줄 수 있나요?
$offText