According to your description, I make a small demo to import excel and store data into database.
It used NPOI, you can download it in NuGet.
Model
public class book
{
[Key]
public int id { get; set; }
public string dld { get; set; }
public string BO { get; set; }
public string paymentstatus { get; set; }
}
public class bookContext : DbContext
{
public DbSet<book> books { get; set; }
}
public class excel
{
public static DataTable Import(DataTable dt,XSSFWorkbook workbook,bookContext db)
{
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
IEnumerator rows = sheet.GetRowEnumerator();
for(int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
{
dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());
}
while (rows.MoveNext())
{
XSSFRow row = (XSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for(int i = 0; i < row.LastCellNum; i++)
{
NPOI.SS.UserModel.ICell cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
dt.Rows.RemoveAt(0);
if (dt != null && dt.Rows.Count != 0)
{
for(int i = 0; i < dt.Rows.Count; i++)
{
book b = new book();
b.dld = dt.Rows[i]["dld"].ToString();
b.BO = dt.Rows[i]["BO"].ToString();
b.paymentstatus = dt.Rows[i]["paymentstatus"].ToString();
var flag = db.books.Where(x => x.BO == b.BO).FirstOrDefault();
if (flag != null&&flag.paymentstatus!=b.paymentstatus)
{
flag.paymentstatus = b.paymentstatus;
db.books.AddOrUpdate(flag);
}
if (flag != null)
{
db.books.AddOrUpdate(flag);
}
else
{
db.books.AddOrUpdate(b);
}
}
}
db.SaveChanges();
return dt;
}
public static DataTable Import(DataTable dt,HSSFWorkbook workbook,bookContext db)
{
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
IEnumerator rows = sheet.GetRowEnumerator();
for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
{
dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());
}
while (rows.MoveNext())
{
HSSFRow row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = 0; i < row.LastCellNum; i++)
{
NPOI.SS.UserModel.ICell cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
dt.Rows.RemoveAt(0);
if (dt != null && dt.Rows.Count != 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
book b = new book();
b.dld = dt.Rows[i]["dld"].ToString();
b.BO = dt.Rows[i]["BO"].ToString();
b.paymentstatus = dt.Rows[i]["paymentstatus"].ToString();
var flag = db.books.Where(x => x.BO == b.BO).FirstOrDefault();
if (flag != null && flag.paymentstatus != b.paymentstatus)
{
flag.paymentstatus = b.paymentstatus;
db.books.AddOrUpdate(flag);
}
if (flag != null)
{
db.books.AddOrUpdate(flag);
}
else
{
db.books.AddOrUpdate(b);
}
}
}
db.SaveChanges();
return dt;
}
}
Here is the result.
Best regards,
Yihui Sun
.NET forums are moving to a new home on Microsoft Q&A, we encourage you to go to Microsoft Q&A for .NET for posting new questions and get involved today.
.NET forums are moving to a new home on Microsoft Q&A, we encourage you to go to Microsoft Q&A for .NET for posting new questions and get involved today.
Member
4 Points
16 Posts
how to import excel data to database table in asp.net mvc entityframework db first?
Jul 19, 2020 05:45 PM|sandesh pokhrel|LINK
I want to import data
dId BO paymentstatus
1232 32321 Unpaid
234 44423 Unpaid
43 42333 Unpaid
1232 32321 Unpaid
234 44423 Unpaid
43 42333 Unpaid
I want to upload excel file and import data to sql server database table.
also when I upload another excel file after imported above data I want following which has following record like
dId BO paymentstatus
234 44423 paid
43 42333 paid
I want to change paymentstatus paid of respective BO according to file uploaded next time. excel file may contains hundreds of data.
any example or solution for this kind of senario.
Contributor
2770 Points
789 Posts
Re: how to import excel data to database table in asp.net mvc entityframework db first?
Jul 20, 2020 07:48 AM|YihuiSun|LINK
Hi sandesh pokhrel,
According to your description, I make a small demo to import excel and store data into database.
Model
Controller
View
DAL
public class excel { public static DataTable Import(DataTable dt,XSSFWorkbook workbook,bookContext db) { NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); IEnumerator rows = sheet.GetRowEnumerator(); for(int j = 0; j < (sheet.GetRow(0).LastCellNum); j++) { dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString()); } while (rows.MoveNext()) { XSSFRow row = (XSSFRow)rows.Current; DataRow dr = dt.NewRow(); for(int i = 0; i < row.LastCellNum; i++) { NPOI.SS.UserModel.ICell cell = row.GetCell(i); if (cell == null) { dr[i] = null; } else { dr[i] = cell.ToString(); } } dt.Rows.Add(dr); } dt.Rows.RemoveAt(0); if (dt != null && dt.Rows.Count != 0) { for(int i = 0; i < dt.Rows.Count; i++) { book b = new book(); b.dld = dt.Rows[i]["dld"].ToString(); b.BO = dt.Rows[i]["BO"].ToString(); b.paymentstatus = dt.Rows[i]["paymentstatus"].ToString(); var flag = db.books.Where(x => x.BO == b.BO).FirstOrDefault(); if (flag != null&&flag.paymentstatus!=b.paymentstatus) { flag.paymentstatus = b.paymentstatus; db.books.AddOrUpdate(flag); } if (flag != null) { db.books.AddOrUpdate(flag); } else { db.books.AddOrUpdate(b); } } } db.SaveChanges(); return dt; } public static DataTable Import(DataTable dt,HSSFWorkbook workbook,bookContext db) { NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); IEnumerator rows = sheet.GetRowEnumerator(); for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++) { dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString()); } while (rows.MoveNext()) { HSSFRow row = (HSSFRow)rows.Current; DataRow dr = dt.NewRow(); for (int i = 0; i < row.LastCellNum; i++) { NPOI.SS.UserModel.ICell cell = row.GetCell(i); if (cell == null) { dr[i] = null; } else { dr[i] = cell.ToString(); } } dt.Rows.Add(dr); } dt.Rows.RemoveAt(0); if (dt != null && dt.Rows.Count != 0) { for (int i = 0; i < dt.Rows.Count; i++) { book b = new book(); b.dld = dt.Rows[i]["dld"].ToString(); b.BO = dt.Rows[i]["BO"].ToString(); b.paymentstatus = dt.Rows[i]["paymentstatus"].ToString(); var flag = db.books.Where(x => x.BO == b.BO).FirstOrDefault(); if (flag != null && flag.paymentstatus != b.paymentstatus) { flag.paymentstatus = b.paymentstatus; db.books.AddOrUpdate(flag); } if (flag != null) { db.books.AddOrUpdate(flag); } else { db.books.AddOrUpdate(b); } } } db.SaveChanges(); return dt; } }
Here is the result.
Best regards,
Yihui Sun
Member
4 Points
16 Posts
Re: how to import excel data to database table in asp.net mvc entityframework db first?
Jul 20, 2020 01:12 PM|sandesh pokhrel|LINK
thank you for replay Yihuisun,
you are doing it in one browse file.
I want two browse file option one for import excel data to database.
next for update paymentstatus column of respective BO in the excel file .
Contributor
2770 Points
789 Posts
Re: how to import excel data to database table in asp.net mvc entityframework db first?
Jul 21, 2020 02:19 AM|YihuiSun|LINK
Hi sandesh pokhrel,
I do some change so that have two import option. The next one can update paymentstatus.
View
Controller
Here is the result.
Best regards,
Yihui Sun