Hi mahesh213,
Refer below sample code.
Model
public class Generation
{
public int Generation1Count { get; set; }
public int Generation1TotalSum { get; set; }
public int Generation2Count { get; set; }
public int Generation2TotalSum { get; set; }
public int Generation3Count { get; set; }
public int Generation3TotalSum { get; set; }
public List<Memberdetails> Memberdetails { get; set; }
}
public class Memberdetails
{
public string MemberType { get; set; }
public string MemberCategory { get; set; }
public int TotalSum { get; set; }
public int MemberCount { get; set; }
}
Namespaces
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
Controller
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
Generation model = new Generation();
model.Memberdetails = new List<Memberdetails>();
return View(model);
}
public ActionResult Upload()
{
Generation generation = new Generation();
DataSet ds = new DataSet();
if (Request.Files.Count > 0)
{
HttpPostedFileBase postedFile = Request.Files[0];
string fileName = Path.GetFileName(postedFile.FileName);
string path = Server.MapPath("~/Uploads/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
postedFile.SaveAs(path + fileName);
string filePath = string.Empty;
filePath = path + Path.GetFileName(postedFile.FileName);
string extension = Path.GetExtension(postedFile.FileName);
postedFile.SaveAs(filePath);
string conString = string.Empty;
switch (extension)
{
case ".xls": //Excel 97-03.
conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07 and above.
conString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conString = string.Format(conString, filePath);
using (OleDbConnection connExcel = new OleDbConnection(conString))
{
using (OleDbCommand cmdExcel = new OleDbCommand())
{
using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
{
cmdExcel.Connection = connExcel;
//Get the name of First Sheet.
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
//Read Data from First Sheet.
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + sheetName + "]";
odaExcel.SelectCommand = cmdExcel;
odaExcel.Fill(ds);
connExcel.Close();
}
}
}
List<Memberdetails> details = new List<Memberdetails>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
Memberdetails detail = new Memberdetails();
detail.MemberCategory = dr["MemberCategory"].ToString();
detail.MemberType = dr["MemberType"].ToString();
detail.TotalSum = Convert.ToInt32(dr["TotalSum"]);
detail.MemberCount = Convert.ToInt32(dr["MemberCount"]);
details.Add(detail);
}
generation.Memberdetails = details;
DataTable result = ds.Tables[0].AsEnumerable()
.GroupBy(r => new
{
MemberType = r["MemberType"],
MemberCategory = r["MemberCategory"]
})
.Select(g =>
{
var row = g.First();
row.SetField("TotalSum", g.Sum(r => Convert.ToInt32(r["TotalSum"])));
row.SetField("MemberCount", g.Sum(r => Convert.ToInt32(r["MemberCount"])));
return row;
}).CopyToDataTable();
generation.Generation1Count = result.Select("MemberType='Generation1'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation1'")[0]["MemberCount"]) : 0;
generation.Generation1TotalSum = result.Select("MemberType='Generation1'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation1'")[0]["TotalSum"]) : 0;
generation.Generation2Count = result.Select("MemberType='Generation2'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation2'")[0]["MemberCount"]) : 0;
generation.Generation2TotalSum = result.Select("MemberType='Generation2'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation2'")[0]["TotalSum"]) : 0;
generation.Generation3Count = result.Select("MemberType='Generation3'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation3'")[0]["MemberCount"]) : 0;
generation.Generation3TotalSum = result.Select("MemberType='Generation3'").Length > 0 ? Convert.ToInt32(result.Select("MemberType='Generation3'")[0]["TotalSum"]) : 0;
}
return Json(JsonConvert.SerializeObject(generation, Formatting.Indented), JsonRequestBehavior.AllowGet);
}
}
View
@model Import_Excel_To_Table_jQuery_MVC.Models.Generation
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$('#fuUpload').on('change', function () {
var formData = new FormData();
var files = $(this).get(0).files[0];
formData.append(files.name, files);
$.ajax({
url: "/Home/Upload",
type: 'POST',
cache: false,
contentType: false,
processData: false,
data: formData,
success: function (response) {
var data = JSON.parse(response);
$('#txtGeneration1Count').val(data.Generation1Count);
$('#txtGeneration2Count').val(data.Generation2Count);
$('#txtGeneration3Count').val(data.Generation3Count);
$('#txtGeneration1TotalSum').val(data.Generation1TotalSum);
$('#txtGeneration2TotalSum').val(data.Generation2TotalSum);
$('#txtGeneration3TotalSum').val(data.Generation3TotalSum);
var dataSet = JSON.parse(response).Memberdetails;
$('#tblDetails tbody').empty();
var rows = '';
$.each(dataSet, function () {
var id = $(this).find("CustomerId").text();
var name = $(this).find("Name").text();
var country = $(this).find("Country").text();
rows += "<tr><td>" + $(this)[0].MemberType + "</td><td>"
+ $(this)[0].MemberCategory + "</td><td>"
+ $(this)[0].TotalSum + "</td><td>"
+ $(this)[0].MemberCount + "</td></tr>";
});
$('#tblDetails tbody').append(rows);
}
});
});
});
</script>
</head>
<body>
<table id="tblDetails" class="table simpleHomeSummary-grid">
<thead>
<tr>
<th>MemberType</th>
<th>MemberCategory</th>
<th>TotalSum</th>
<th>MemberCount</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Memberdetails)
{
<tr>
<td>@item.MemberType</td>
<td>@item.MemberCategory</td>
<td>@item.TotalSum</td>
<td>@item.MemberCount</td>
</tr>
}
</tbody>
</table>
<br />
@using (Html.BeginForm("Save", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td>Select File</td>
<td><input type="file" name="postedFile" id="fuUpload" /></td>
</tr>
<tr>
<td>Generation1Count</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation1Count, new { @id = "txtGeneration1Count" })</td>
</tr>
<tr>
<td>Generation1Sum</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation1TotalSum, new { @id = "txtGeneration1TotalSum" })</td>
</tr>
<tr>
<td>Generation2Count</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation2Count, new { @id = "txtGeneration2Count" })</td>
</tr>
<tr>
<td>Generation2Sum</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation2TotalSum, new { @id = "txtGeneration2TotalSum" })</td>
</tr>
<tr>
<td>Generation3Count</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation3Count, new { @id = "txtGeneration3Count" })</td>
</tr>
<tr>
<td>Generation3Sum</td>
<td>
<td>@Html.TextBoxFor(m => m.Generation3TotalSum, new { @id = "txtGeneration3TotalSum" })</td>
</tr>
</table>
<br />
<input type="submit" value="Save" />
}
</body>
</html>
Screenshot