Reimporting an asset from Editor Code
Hi, I'm actually trying to make a script that takes an excel document, analyses it and then takes out arrays with the data in it.
So I took a base decoding excel documents: https://unitylist.com/p/28t/Unity-excel-importer.
How it works is : 
-Detects an xlsx document has been imported
-Asks user to create a class to organize the data in arrays
-Make a script that's gonna associate the .xlsx to that class
-Reimport the .xlsx document, a .asset has been created with all your data here.
Since I'm working for a "classic" company, I tried making it automatic.
 What I got so far is: 
-Detects an xlsx document has been imported, creates the scripts with the good class associated
-Reimport the.xlsx document etc...
You got it, I need to reimport my document from script to make it automatic.
 Problem is, AssetDatabase.Refresh(); isn't enough and using AssetDatabase.ImportAsset(excelPath, ImportAssetOptions.ForceUpdate); makes unity loop the "Import small assets" phase, forcing me to close from task manager. 
TL;DR: I need to reimport my excel document, but I either end up in an infinite "Import small assets" loop, either end up with nothing.
Here is the part of the script I think is the most interesting: (the AssetDatabase.ImportAsset(excelPath, ImportAssetOptions.ForceUpdate); line is the one making it freeze.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEditor;
 using System.IO;
 using System.Text;
 using System;
 using NPOI.HSSF.UserModel;
 using NPOI.XSSF.UserModel;
 using NPOI.SS.UserModel;
 
 public class ExcelAssetScriptMenu
 {
     const string ScriptTemplateName = "ExcelAssetScriptTemplete.cs.txt";
     const string FieldTemplete = "\tpublic List<TableauCollaborateursUpdate> #FIELDNAME#;";
 
     [MenuItem("Assets/Create/ExcelAssetScript", false)]
     public static void CreateScript(string excel)
     {
         bool hasReloaded = false;
 
         //string savePath = EditorUtility.SaveFolderPanel("Save ExcelAssetScript", Application.dataPath, "");
         string savePath = "Assets/Excel Files";
         if(savePath == "") return;
 
         //var selectedAssets = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets);
 
         //string excelPath = AssetDatabase.GetAssetPath(selectedAssets[0]);
         string excelPath = "Assets/Excel Files/" + excel + ".xlsx";
 
         string excelName = Path.GetFileNameWithoutExtension(excelPath);
         List<string> sheetNames = GetSheetNames(excelPath);
 
         string scriptString = BuildScriptString(excelName, sheetNames);
 
         string path = Path.ChangeExtension(Path.Combine(savePath, excelName), "cs");
         File.WriteAllText(path, scriptString);
 
         AssetDatabase.Refresh();
         if (!hasReloaded)
         {
             AssetDatabase.ImportAsset(excelPath, ImportAssetOptions.ForceUpdate);
             hasReloaded = true;
         }
     }
 
               PS: Sorry for the long post, it's the first time I try coding outside Play mode and find myself really lost, thanks in advance !
Your answer
 
             Follow this Question
Related Questions
Is it normal for Unity assets to take 24 hours to import? 4 Answers
Models for unity 1 Answer
ScriptableObjects inside another ScriptableObject not saving changes in Custom Editor Window 0 Answers
How can I get a sub asset? 1 Answer
Transferring assets from my mac to my PC breaks everything, please help! 0 Answers