JimB_ Ответов: 1

C# MVC как загрузить данные из файла .xlsx в локальную базу данных


Привет дорогие программисты C# mvc

пожалуйста, я новичок в C# mvc немного помогите загрузить данные из csv-файла в базу данных loacal. Спасибо :)

CSv file has a value in the first row I have to avoid this value to skip error get loading the data

+-------+------+--------------+
|       | 300  |              |
+-------+------+--------------+
| age   | fname| lastName     |
+-------+------+--------------+
|   1   | Anna |   Smith      |
+-------+------+--------------+
|   2   |  Tom |  Cat         |
+-------+------+--------------+
|   3   |  Sam |   Fear       |
+-------+------+--------------+

class Detail
[Key]
Id {get;set;}
age{get;set;}
Fname{get;set;}
LastName{get;set;}

context 

 public DbSet<Detail> Detail{ get; set; }


Что я уже пробовал:

В домашнем контроллере

public ActionResult Upload()
        {
           
            return View(db.Details.ToList());
        }



   [HttpPost]
        public ActionResult Upload(HttpPostedFileBase file)
        {
            if (file != null && file.ContentLength > 0)
            {
                StreamReader csvReader = new StreamReader(file.InputStream);
                string inputLine = "";
                while ((inputLine = csvReader.ReadLine()) != null)
                {
                    string[] values = inputLine.Split(new Char[] { ',' });
                    Detail records = new Detail();
                    records.age= values[0];
                    records.fname= values[1];
                    records.lastname= values[2];
//I am getting error here 'index was out of bounds of the array'
                   
                   db.Details.Add(records);
                    db.SaveChanges();
                    ViewBag.Success = "Data saved";
                }
                csvReader.Close();
            }



            return View("Upload");
        }



Загрузить.cshtml по



@model IEnumerable<AppGarden.Models.Detail>

@{
    ViewBag.Title = "Upload";
}

<h3>Upload File</h3>

@using (Html.BeginForm("Upload",
                    "Home",
                    FormMethod.Post,
                    new { enctype = "multipart/form-data" }))
{
    <div>
        <label for="File">Upload File:</label>
        <input type="file" name="File" id="File"  /><br />

        <input type="submit" value="Upload File" /><br />
    </div>

   

   

}

Herman&lt;T&gt;.Instance

LINQ -> .Expand()
служба данных.GetCars().Expand(.....);

1 Ответов

Рейтинг:
6

#realJSOP

Если бы это был я, я бы нашел библиотеку, которая уже знает, как анализировать CSV-файлы, и использовал бы ее. Простое разбиение каждой строки на запятую не всегда поможет выполнить эту работу. Кроме того, единственный способ сделать это правильно-поместить данные в базу данных с соответствующим типом данных.

Я написал библиотеку, которая анализирует файлы Excel и CSV. Возможно, вы захотите это проверить:

CSV/Excel File Parser - A Revisit[^]