@@ -184,17 +184,28 @@ async function main() {
184184 // CLI 변수 > 파일 전역변수 우선 적용
185185 const mergedVars = { ...globalVars , ...cliVars } ;
186186
187- // 엑셀 전체 스타일 파싱 및 db/output 우선 적용
187+ // 기본값 설정
188188 let excelStyle = { } ;
189189 let excelDb = undefined ;
190190 let excelOutput = undefined ;
191+ let createSeparateToc = false ; // 별도 목차 파일 생성 여부
192+
191193 if ( argv . xml && fs . existsSync ( resolvePath ( argv . xml ) ) ) {
192194 const xml = fs . readFileSync ( resolvePath ( argv . xml ) , 'utf8' ) ;
193195 const parsed = await xml2js . parseStringPromise ( xml , { trim : true } ) ;
196+
197+ // queries 루트 엘리먼트에서 separateToc 속성 확인
198+ if ( parsed . queries && parsed . queries . $ ) {
199+ if ( parsed . queries . $ . separateToc ) createSeparateToc = parsed . queries . $ . separateToc === 'true' ;
200+ }
201+
194202 if ( parsed . queries && parsed . queries . excel && parsed . queries . excel [ 0 ] ) {
195203 const excel = parsed . queries . excel [ 0 ] ;
196204 if ( excel . $ && excel . $ . db ) excelDb = excel . $ . db ;
197205 if ( excel . $ && excel . $ . output ) excelOutput = excel . $ . output ;
206+ // excel 엘리먼트의 separateToc가 있으면 우선적용 (덮어쓰기)
207+ if ( excel . $ && excel . $ . separateToc ) createSeparateToc = excel . $ . separateToc === 'true' ;
208+
198209 excelStyle . header = { } ;
199210 excelStyle . body = { } ;
200211 if ( excel . header && excel . header [ 0 ] ) {
@@ -227,6 +238,7 @@ async function main() {
227238 excelStyle = queries . excel ;
228239 if ( queries . excel . db ) excelDb = queries . excel . db ;
229240 if ( queries . excel . output ) excelOutput = queries . excel . output ;
241+ if ( queries . excel . separateToc !== undefined ) createSeparateToc = queries . excel . separateToc ;
230242 }
231243 }
232244
@@ -315,16 +327,20 @@ async function main() {
315327 excelStyleHelper . populateTableOfContents ( tocSheet , createdSheetNames ) ;
316328 console . log ( `[목차] 시트 내용 생성 완료 (맨 왼쪽 위치)` ) ;
317329
318- // 별도 목차 엑셀 파일 생성
319- const tocWb = new ExcelJS . Workbook ( ) ;
320- excelStyleHelper . createExternalTableOfContents ( tocWb , createdSheetNames , outFile ) ;
321-
322- // 파일명: 기존 outFile 기준 _목차_yyyymmddhhmmss.xlsx
323- const tocExt = path . extname ( outFile ) ;
324- const tocBase = outFile . slice ( 0 , - tocExt . length ) ;
325- const tocFile = `${ tocBase } _목차_${ getNowTimestampStr ( ) } ${ tocExt } ` ;
326- await tocWb . xlsx . writeFile ( tocFile ) ;
327- console . log ( `[목차] 별도 엑셀 파일 생성: ${ tocFile } ` ) ;
330+ // 별도 목차 엑셀 파일 생성 (설정에 따라 조건부 생성)
331+ if ( createSeparateToc ) {
332+ const tocWb = new ExcelJS . Workbook ( ) ;
333+ excelStyleHelper . createExternalTableOfContents ( tocWb , createdSheetNames , outFile ) ;
334+
335+ // 파일명: 기존 outFile 기준 _목차_yyyymmddhhmmss.xlsx
336+ const tocExt = path . extname ( outFile ) ;
337+ const tocBase = outFile . slice ( 0 , - tocExt . length ) ;
338+ const tocFile = `${ tocBase } _목차_${ getNowTimestampStr ( ) } ${ tocExt } ` ;
339+ await tocWb . xlsx . writeFile ( tocFile ) ;
340+ console . log ( `[목차] 별도 엑셀 파일 생성: ${ tocFile } ` ) ;
341+ } else {
342+ console . log ( `[목차] 별도 파일 생성 안함 (separateToc=false)` ) ;
343+ }
328344 }
329345
330346 await workbook . xlsx . writeFile ( outFile ) ;
0 commit comments