본문 바로가기
Leaning/유니티

[유니티] 메뉴생성 - 목표: 엑셀파일 변환

by ksw8596 2025. 1. 4.
using UnityEditor;
using UnityEngine;
using UnityEngine.Windows;
using System.IO;

//EditorWindow를 상속
public class TableDataTool : EditorWindow
{
    private string selectedFilePath = "No file selected";

    private string inputFilePath = "";
    private string outputDirectory = "Data";

    //유니티에 메뉴생성
    [MenuItem("Tools/TableDataTool")]
    //생성창 만들기
    public static void ShowWindow()
    {
        GetWindow<TableDataTool>();
    }


    private void OnGUI()
    {
        GUILayout.Label("Excel to Csv Converter : ");

        EditorGUILayout.LabelField("Input File Path", inputFilePath);
        if(GUILayout.Button("File Select"))
        {
            FileOpen();
        }

        if(GUILayout.Button("Convert"))
        {
            if(string.IsNullOrEmpty(inputFilePath)) 
            {
                Debug.LogError("Input file path must be specified");
                return;
            }

            ExcelToConverter.ConvertXlsmToCsv(inputFilePath, outputDirectory);
            Debug.Log($"Conversion completed. File save to: Asset/{outputDirectory}");
        }
    }
    //디렉토리 열기
    public string FileOpen()
    {
		//xlsm, xlsx 파일을 읽을 수 있도록함
        string path = EditorUtility.OpenFilePanel("Select a File", "", "xlsm;*.xlsx;");
		
        // 파일을 잘 가져왔는지 검사하기위한 string값
        string[] supportedExtensions = { ".xlsm", ".xlsx" };

        if (!string.IsNullOrEmpty(path))
        {
            string fileExtension = System.IO.Path.GetExtension(path).ToLower();

            if (System.Array.Exists(supportedExtensions, ext => ext == fileExtension))
            {
                selectedFilePath = path;
                Debug.Log($"Selected file: {path}");
            }
            else
            {
                selectedFilePath = "Unsupported file type selected";
                Debug.LogWarning("Unsupported file type selected.");
            }
        }
        else
        {
            selectedFilePath = "No file selected";
            Debug.Log("No file selected.");
        }
        return inputFilePath = path;
    }
}

 

using System;
using System.IO;
using UnityEngine;
using UnityEngine.Rendering.LookDev;

namespace Tools
{
    public class ExcelToCsvConverter
    {
        public static void ConvertXlsmToCsv(string inputFilePath, string outputFilePath)
        {
            try
            {
                if (!File.Exists(inputFilePath))
                {
                    Debug.Log($"File not found : {inputFilePath}");
                    return;
                }
                if (!Directory.Exists(outputFilePath))
                {
                    Directory.CreateDirectory(outputFilePath);
                }

                //파일을 열어준다.
                using (FileStream file = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read))
                {
                    //열렸는가를 체크하기위한 로그
                    Debug.Log($"File Open : {inputFilePath}");
                }
            }
            catch (Exception ex)
            {
                Debug.LogError($"Error converting file : {ex.Message}");
            }
        }
    }
}

'Leaning > 유니티' 카테고리의 다른 글

[유니티] 툴 만드는 법  (0) 2025.01.04
유니티 카드게임 Learning  (0) 2024.12.14
유니티 기능  (0) 2024.12.14
[유니티] ScriptableObject  (0) 2024.12.02