Excel 파일을 JSON 형식으로 변환하고, 데이터 유효성 검사를 수행하는 Python GUI 도구입니다.
- Excel to JSON 변환: Excel 파일(.xlsx)을 JSON 형식으로 자동 변환
- TID(Table ID) 자동 생성: 각 데이터 행에 고유한 식별자 자동 부여
- 데이터 유효성 검사:
- 키 중복 검사 (Key Duplicate Check)
- 빈 값 검사 (Empty Value Check)
- 데이터 타입 검사 (Data Type Check)
- 유니크 값 검사 (Unique Value Check)
- 참조 데이터 검사 (Reference Validation)
- 값 크기 비교 검사 (Value Size Compare)
- GUI 인터페이스: Tkinter 기반의 사용자 친화적 인터페이스
- 로깅 시스템: 모든 작업 내역을 로그 파일로 기록
- 크로스 플랫폼 지원: macOS 및 Windows 지원
FileConverter/
├── Config/
│ ├── config.json # 변환 설정 (시트명, 컬럼 정보, TID 설정)
│ ├── directory.json # 디렉토리 경로 설정 (Mac/Windows)
│ ├── guisetting.json # GUI 설정 (윈도우 크기, 버튼 크기)
│ └── validationconfig.yml # 유효성 검사 규칙 설정
├── Data/
│ ├── ExcelData/ # 입력 Excel 파일 (.xlsx)
│ └── JsonData/ # 출력 JSON 파일
├── FileConverter/
│ ├── FileConverter.py # 메인 실행 파일
│ └── Package/
│ ├── Convert/ # 변환 로직
│ ├── Data/ # 설정 및 Excel 데이터 처리
│ ├── Debug/ # 로깅 및 에러 처리
│ ├── Gui/ # GUI 화면 및 기능
│ ├── ValidateCheck/ # 유효성 검사 로직
│ └── directory/ # 디렉토리 관리
└── Logs/ # 로그 파일 저장
- Python 3.x
- 필수 라이브러리:
openpyxl- Excel 파일 처리PyYAML- YAML 설정 파일 처리tkinter- GUI (Python 기본 포함)
pip install openpyxl PyYAMLcd FileConverter
python FileConverter.py- 프로그램 실행 시 메인 화면이 표시됩니다.
- Excel List: 변환할 Excel 파일을 선택합니다.
- File Convert: 선택한 파일만 JSON으로 변환합니다.
- Validate Check: 데이터 유효성 검사만 실행합니다.
- Run All: 유효성 검사 후 모든 파일을 변환합니다.
- 첫 번째 행(Row 0): 컬럼 이름
- 두 번째 행(Row 1): 데이터 타입 (
int,float,string등) - 세 번째 행부터: 실제 데이터
#으로 시작하는 컬럼은 변환에서 제외됩니다.?로 끝나는 타입은 nullable입니다.!로 끝나는 타입은 유니크 값입니다.
| 설정 항목 | 설명 |
|---|---|
targetSheetName |
대상 시트 이름 |
columnNameNum |
컬럼 이름 행 번호 |
columnTypeNum |
데이터 타입 행 번호 |
keyColumnName |
키 컬럼 이름 |
tidString |
TID 컬럼 이름 |
{
"excel": {
"targetSheetName": "Sheet1",
"columnNameNum": 0,
"columnTypeNum": 1,
"keyColumnName": "ID",
"tidString": "TID"
}
}ref_validation: # 참조 데이터 검증 규칙
MonsterSpawn.MonsterID: Monster.ID
value_size_compare: # 값 크기 비교 규칙
FieldObjectGrowth.PhysicDamage_Max: FieldObjectGrowth.PhysicDamage_Min모든 작업 내역은 Logs/ 디렉토리에 타임스탬프가 포함된 로그 파일로 저장됩니다.
log_2021_11_15_23.20.28.txt
- 김태형 (Tae Hyung Kim) - 2021.12.28
이 프로젝트는 개발 중입니다.