NerakSeven Ответов: 1

Как читать данные из excel и показывать их в виде?


Мне нужно создать приложение с архитектурой mvc arquitecture. Мне нужно показать список студентов. Эти данные находятся в excel, до сих пор не очень хорошо понимаю логику mvc, я создал следующие классы, но понятия не имею, как отображать данные в представлениях.

Класс студентов
public class Alumno
   {

       public string nombre { get; set; }
       public string apellido { get; set; }
       public int generacion { get; set; }

       public void crearAlumno( string nombre , string apellido , string generacion)
       {
           throw new NotImplementedException();
       }

   }

Соединение Excel
public class UtilExcel
    {

        private static readonly ILog Log = LogManager.GetLogger(typeof(UtilExcel));

        private static Microsoft.Office.Interop.Excel.Application appExcel;
        private static Workbook newWorkbook = null;
        private static _Worksheet objsheet = null;

        //Method to initialize opening Excel
        public bool excel_init(String path)
        {
            appExcel = new Microsoft.Office.Interop.Excel.Application();
            bool retVal = false;

            if (System.IO.File.Exists(path))
            {
                // then go and load this into excel
                newWorkbook = appExcel.Workbooks.Open(path, true, true);
                objsheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet;
                retVal = true;
            }
            else
            {
                Log.Info("No es posible abrir archivo [" + path + "]");
                System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
                appExcel = null;
                //System.Windows.Forms.Application.Exit();
            }
            return retVal;
        }

        //Method to get value; cellname is A1,A2, or B1,B2 etc...in excel.
        public string excel_getValue(string cellname)
        {
            string value = string.Empty;
            try
            {
                value = objsheet.get_Range(cellname).get_Value().ToString();
            }
            catch
            {
                value = null;
            }

            return value;
        }

        //Method to close excel connection
        public void excel_close()
        {
            if (appExcel != null)
            {
                try
                {
                    newWorkbook.Close();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
                    appExcel = null;
                    objsheet = null;
                }
                catch (Exception ex)
                {
                    appExcel = null;
                    Log.Info("No es posible liberar el objeto: " + ex.ToString());
                }
                finally
                {
                    GC.Collect();
                }
            }
        }



    }


Класс для чтения данных

public class ProcesoService
   {

       private static readonly ILog Log = LogManager.GetLogger(typeof(ProcesoService));

       public void procesarCargaDatos(string archivo)
       {
           Log.Info("Inicio proceso archivo [" + archivo + "]");
           UtilExcel utlXls = new UtilExcel();
           string path = @"C:\students.xlsx" + archivo;
           if (utlXls.excel_init(path))
           {
              Alumno prodSrv = new Alumno();
               //
               int fila = 2;
               bool continuar = true;
               while (continuar)
               {
                   //A: Producto
                   string nombre = utlXls.excel_getValue(string.Format("A{0}", fila));
                   if (nombre != null && !nombre.Equals(string.Empty))
                   {
                       //B: Apellido
                       string apellido = utlXls.excel_getValue(string.Format("B{0}", fila));
                       //C: Añoingreso
                       string generacion = utlXls.excel_getValue(string.Format("C{0}", fila));



                       prodSrv.crearAlumno(nombre, apellido, generacion);
                       //
                       fila++;
                   }
                   else continuar = false;
               }

               //
               utlXls.excel_close();
               prodSrv = null;

           }
           utlXls = null;
           Log.Info("Término proceso archivo [" + archivo + "]");
       }



   }


Что я уже пробовал:

Я пробовал это, но я не знаю, хорошо, пожалуйста, мне нужна помощь :c , у меня нет кода в контроллерах

1 Ответов

Рейтинг:
0

Kenneth Haugland

Как только у вас есть активный лист, как вы это сделали, храните в вас переменную objsheet все очень просто:

//This sets the top right cell, Excel starts its index on 1!
objsheet.Cells[1,1] = "5";

Получение значения происходит как раз наоборот:
double MyValue = objsheet.Cells[1,1];


Вы даже можете вставить формулы в ячейку:
objsheet.Cells[1, 5] = "=SUM(D2:D" + (4).ToString() + ")";


Но обязательно наберите его на английском, чтобы он работал. Это может показаться странным, но некоторые версии Excel имеют язык программирования, который находится на другом языке.