feat: 파일프로세서 개선 - 안정적인 Excel 파일 처리

- 이전 잘 작동하던 코드 로직을 현재 프로세서에 적용
- LuckyExcel 우선 시도 + SheetJS Fallback 패턴 도입
- CSV, XLS, XLSX 모든 형식에 대한 안정적 처리
- 한글 시트명 정규화 및 워크북 구조 검증 강화
- 복잡한 SheetJS 옵션 단순화로 안정성 향상
- 에러 발생 시 빈 시트 생성으로 앱 중단 방지
- 테스트 환경 및 Cursor 규칙 업데이트

Technical improvements:
- convertSheetJSToLuckyExcel 함수로 안정적 데이터 변환
- UTF-8 codepage 설정으로 한글 지원 강화
- validateWorkbook 함수로 방어적 프로그래밍 적용
This commit is contained in:
sheetEasy AI Team
2025-06-20 14:32:33 +09:00
parent f288103e55
commit 3a8c6af7ea
16 changed files with 5249 additions and 133 deletions

62
src/vite-env.d.ts vendored
View File

@@ -1 +1,63 @@
/// <reference types="vite/client" />
/**
* LuckyExcel 타입 선언
*/
declare module "luckyexcel" {
interface LuckyExcelOptions {
container?: string;
title?: string;
lang?: string;
data?: any[];
options?: {
showtoolbar?: boolean;
showinfobar?: boolean;
showsheetbar?: boolean;
showstatisticBar?: boolean;
allowCopy?: boolean;
allowEdit?: boolean;
enableAddRow?: boolean;
enableAddCol?: boolean;
};
}
interface LuckySheetData {
name: string;
index: string;
celldata: any[];
status: number;
order: number;
row: number;
column: number;
}
interface LuckyExcelResult {
sheets: Array<{
name: string;
row: number;
column: number;
celldata: Array<{
r: number;
c: number;
v: {
v: any;
m: string;
ct?: any;
};
}>;
}>;
}
function transformExcelToLucky(
arrayBuffer: ArrayBuffer,
fileName: string,
callback: (exportJson: LuckyExcelResult, luckysheetfile: any) => void,
): void;
export {
transformExcelToLucky,
LuckyExcelOptions,
LuckySheetData,
LuckyExcelResult,
};
}