Импорт Excel в SQL не импортирует правильное количество записей - PullRequest
0 голосов
/ 09 мая 2019

У меня происходит очень странная вещь, и я не могу понять причину.Я импортирую электронную таблицу, используя OleDbConnection, в таблицу данных.Затем я вставляю данные, читая строки данных в базу данных SQL.Странная часть, когда я делаю это со своей локальной машины в режиме отладки в производственную базу данных, это, кажется, работает просто отлично.Пример: электронная таблица имеет 733 строки и 733 строки импортированы.Но когда я развертываю приложение в рабочей среде и запускаю тот же код в той же базе данных, импортируется только 496 строк.У кого-нибудь есть мысли по этому поводу?

private readonly FulfillmentContext db = new FulfillmentContext();
        private readonly string username = HttpContext.Current.User.Identity.GetUserName();
        private readonly DataTable dt = new DataTable();
        readonly UserRepository userRepository = new UserRepository();
public void ImportLocations(HttpPostedFileBase file)
{
            string filePath = string.Empty;
            string fileName = string.Empty;
            string GUI = Guid.NewGuid().ToString();

            if (file != null)
            {
                string path = HttpContext.Current.Server.MapPath("~/Content/Upload/");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                filePath = path + Path.GetFileName(file.FileName);
                fileName = Path.GetFileName(file.FileName);
                string extension = Path.GetExtension(file.FileName);
                file.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(dt);                            
                            connExcel.Close();
                        }
                    }
                }

                InsertRecords(fileName);
            }
}
private void InsertRecords(string fileName)
{
            var user = userRepository.GetCurrentUser();

            try
            {
                foreach (DataRow row in dt.Rows)
                {
                    string zipCode = FormatZipcode.Format(row[9].ToString());

                    db.Locations.Add(new Location
                    {
                        UserId = user.Id,
                        LocationName = row[0].ToString() ?? "",
                        LocationId = row[1].ToString() ?? "",
                        LocationType = row[2].ToString() ?? "",
                        DistributionCenter = row[3].ToString() ?? "",
                        OpenDate = row[4].ToString() ?? "",
                        Address1 = row[5].ToString() ?? "",
                        Address2 = row[6].ToString() ?? "",
                        City = row[7].ToString() ?? "",
                        State = row[8].ToString() ?? "",
                        Zipcode = zipCode ?? "",
                        Country = row[10].ToString() ?? "",
                        FileName = fileName ?? "",
                        Date = System.DateTime.Now
                    });
                }
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                throw;
            }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...