Я использую MVC3 с кодом C #. У меня есть таблица в SQL Server Express, содержащая несколько столбцов, и у меня есть лист Excel, который имеет такое же количество столбцов с одинаковыми типами данных и именами.
Мое требование - я хочу просмотреть этот файл Excel в моем приложении MVC3, где пользователь может выбрать файл. В моей таблице базы данных, а также в листе Excel есть столбец RegistrationNo
. Прежде чем импортировать данные в таблицу базы данных, RegNo
, представленный в листе Excel, следует сравнить с RegNo
в таблице базы данных, и, если этот RegNo
уже существует, вставка для этого RegNO
не производится иначе, если этого RegNo
нет в таблице, следует вставить строку для этого RegNo
.
Ниже приведен мой код, который я пробовал, но у меня много проблем с этим.
[HttpPost]
public ActionResult AdmissionUpload()
{
string filePath = null;
foreach (string inputTagName in Request.Files)
{
HttpPostedFileBase Infile = Request.Files[inputTagName];
if (Infile.ContentLength > 0 && (Path.GetExtension(Infile.FileName) == ".xls" || Path.GetExtension(Infile.FileName) == ".xlsx" || Path.GetExtension(Infile.FileName) == ".xlsm"))
{
filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(Infile.FileName));
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
}
Infile.SaveAs(filePath);
//Infile.SaveAs(filePath);
}
if (filePath != null)
{
System.Data.OleDb.OleDbConnection oconn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath.ToString() + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\";");
oconn.Open();
try
{
if (oconn.State == System.Data.ConnectionState.Closed)
oconn.Open();
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message);
}
dynamic myTableName = oconn.GetSchema("Tables").Rows[0]["TABLE_NAME"];
OleDbCommand ocmd = new OleDbCommand("select * from [" + myTableName + "]", oconn);
OleDbDataReader odr = ocmd.ExecuteReader();
if (odr.HasRows)
{
while (odr.Read())
{
if (odr[0].ToString().Trim() != "")
{
if (CheckDepartment(odr[0].ToString().Trim()) == false)
{
var model = new DepartmentMaster();
model.DepartmentName = odr[1].ToString().Trim();
db.DepartmentMasters.AddObject(model);
db.SaveChanges();
FLAG = true;
}
}
}
}
}
}
return View();
}
Здесь CheckRegNo
проверяет, существует ли RegNo
.