如何从excel中读取数据并在视图中显示? [英] How to read data from excel and show in a view?

查看:225
本文介绍了如何从excel中读取数据并在视图中显示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用mvc arquitecture创建一个应用程序。我需要显示一份学生名单。这个数据是excel,仍然不太了解mvc的逻辑,我创建了以下类但我不知道如何在视图中显示数据。



学生类别

I need to create an application with mvc arquitecture. I need to display a list of students. This data is in excel, still do not understand very well the logic of mvc, I created the following classes but I have no idea how to display the data in views.

Class of students

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连接


Excel conection

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();
                }
            }
        }



    }





读取数据的类别





Class to read data

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 + "]");
       }



   }





< b>我尝试了什么:



我试过这个,但我不知道是不是请我需要帮助:c,我没有控制器中的代码



What I have tried:

I tried this but i dont know is well please i need help :c , i dont have code in controllers

推荐答案

一旦你有了活动表,就像你在变量 objsheet 中存储的那样,它非常简单:

Once you have the active sheet, as you did store in you variable objsheet it's really simple:
//This sets the top right cell, Excel starts its index on 1!
objsheet.Cells[1,1] = "5";



获取值是恰恰相反:


Getting the value is just the reverse:

double MyValue = objsheet.Cells[1,1];





你甚至可以将公式插入单元格:



You could even insert formulas into the cell:

objsheet.Cells[1, 5] = "=SUM(D2:D" + (4).ToString() + ")";





但请务必使用英文输入以使其正常工作。这可能听起来很奇怪,但有些Excel版本的编程语言使用不同的语言。



But be sure to type it in English to make it work. It may sound strange, but some Excel versions have a programming language that is in a different language.


这篇关于如何从excel中读取数据并在视图中显示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆