CrownyDoc 파일 호환 레이어 구현 (약점 #36 + #86)
개요
CrownyDoc Office Suite의 CRITICAL 약점 2개를 통합 구현.
- 약점 #36: XLSX 가져오기/내보내기 없음 (스프레드시트, CRITICAL)
- 약점 #86: DOCX/XLSX/PPTX 호환 없음 (공통/플랫폼, CRITICAL)
무엇을 했는지
신규 파일: file-compat.js
CrownyFileCompat 네임스페이스 구현 (약 350줄).
XLSX 호환:
xlsx.parse(arrayBuffer) — ZIP 파서 + XML 파싱으로 XLSX 직접 파싱 시도xl/sharedStrings.xml + xl/worksheets/sheet1.xml 추출 및 파싱xlsx.pasteFromExcel(text) — 클립보드/TSV 기반 Excel 데이터 직접 붙여넣기xlsx.export() — CSV(UTF-8 BOM) 내보내기, Excel 직접 호환DOCX 호환:
docx.parse(arrayBuffer) — ZIP 파서 + word/document.xml 파싱 → HTML 변환<w:p> 단락, <w:r> 런(run) 파싱docx.importFromHTML(html) — Word 복사-붙여넣기 HTML 정리 (mso-* 제거)docx.exportToHTML(html) — 깨끗한 독립 HTML 내보내기 (Word 붙여넣기 호환)PPTX 호환:
pptx.exportAsHTML(slides)— 슬라이드 → 독립 HTML 파일 (키보드 탐색, 인쇄/PDF 지원)
showImportDialog()— 형식 선택 가져오기 다이얼로그showExportDialog()— 모드(doc/sheet/slide)별 내보내기 형식 선택 다이얼로그detectFormat(file)— 파일 확장자 기반 형식 자동 감지- CSS 자동 주입 (
.compat-dialog,.compat-format-btn)
_zip.extractAll):
- PK\x03\x04 시그니처 스캔
- 비압축(comprMethod=0) 파일 직접 추출
- deflate 압축 파일은 실용 fallback
한선씨 동반 파일: 파일호환.한선
주요 함수:
XML디코딩,형식감지,CSV셀인코딩열인덱스(Excel 컬럼 문자 → 숫자)MSO클린업,슬라이드HTML뼈대,다운로드파일명,내보내기형식목록
index.html 업데이트
error-fixes.js 뒤에 file-compat.js 스크립트 태그 추가.
benchmark-weaknesses.json 업데이트
ID 36, 86 → status: "done" 변경.
관련 파일 경로
/Users/ef/CrownyDoc/한선씨/정적/file-compat.js— 신규 (메인 구현)/Users/ef/CrownyDoc/한선씨/공용/파일호환.한선— 신규 (한선씨 동반)/Users/ef/CrownyDoc/한선씨/정적/index.html— 스크립트 태그 추가/Users/ef/CrownyDoc/benchmark-weaknesses.json— 상태 업데이트/Users/ef/CrownyDoc/한선씨/정적/import.js— 참조 (기존 CSV/HTML 가져오기)/Users/ef/CrownyDoc/한선씨/정적/export-sheet.js— 참조 (기존 CSV/HTML 내보내기)
잔여 이슈
- deflate 압축 XLSX 완전 파싱: 현재 비압축 ZIP 엔트리만 지원.
DecompressionStreamAPI는 비동기라 동기 파서 구현 필요 — 실용 우회: Excel에서 "CSV로 저장" 후 가져오기 안내. - XLSX 네이티브 내보내기: 현재 CSV 다운로드로 대체. 완전한 XLSX 생성은 ZIP 빌더 구현 필요.
- PPTX 가져오기: 현재 미구현 (내보내기만). pptx의
ppt/slides/slide1.xml파싱 후속 필요. showImportDialog/showExportDialog: 현재 파일 선택 버튼으로 연결됨 — 앱 UI 메뉴바에 연결 필요.