如何从excel中读取数据并在视图中显示? [英] How to read data from excel and show in a view?
问题描述
我需要使用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 variableobjsheet
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屋!