Импортировать данные excel для Скл Сервер с Asp. Net Core MVC

Что такой я работаю в проекте, в котором требуют, чтобы данные ahoja excel хранились в SqlServer, до сих пор у меня есть следующее, Контролирующее:

[HttpGet]
        [Route("Import")]
        public string Import([Bind]Archivos files)
        {
            string sWebRootFolder = _hostingEnvironment.WebRootPath;
            string sFileName = files.Files.ToString();
            FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
            try
            {
                using (ExcelPackage package = new ExcelPackage(file))
                {
                    StringBuilder sb = new StringBuilder();
                    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                    int rowCount = worksheet.Dimension.Rows;
                    int ColCount = worksheet.Dimension.Columns;
                    bool bHeaderRow = true;
                    for (int row = 1; row <= rowCount; row++)
                    {
                        for (int col = 1; col <= ColCount; col++)
                        {
                            if (bHeaderRow)
                            {
                                sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                            }
                            else
                            {
                                sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                            }
                        }
                        sb.Append(Environment.NewLine);
                    }
                    return sb.ToString();
                }
            }
            catch (Exception ex)
            {
                return "Some error occured while importing." + ex.Message;
            }
        }

Модель:

public class Archivos
    {
        [Display(Name = "Files2")]
        public IFormFile[] Files { get; set; }
    }

Вид:

<input type="file" multiple="multiple" id="Files2" name="Files2" />
    <button type="submit" asp-controller="ImportExport" asp-action="Import">OK</button>

    <br />
    <br />
    <table id="exceltable"></table>

еще мне не удается получить отборный arcihvo, они могли бы иметь какой-то пример или соединение, чтобы проверять и сравнивать мой код? заранее спасибо.

0
задан 05.03.2019, 15:37
1 ответ

Я оставляю cГіdigo уже функционально, если помогает poara кто-то, консультируйте несколько сайтов, чтобы производить эту funciГіn.

Драйвер:

public IActionResult ImportFile([Bind] Archivos fl)
    {
        if (fl.Document != null)
        {

            ClassBase ccl = new ClassBase();
            IFormFile[] file;
            file = fl.Document;
            string folderName = "Upload";


            var path_Root = "//ruta_demi_server/carpeta/Archivos";
            var path2 = path_Root + "/" + folderName;
            var pathfile = "";

            if (!Directory.Exists(path2))
                Directory.CreateDirectory(path2);

            var y = file.Count();
            string[] data = new string[y];

            for (int x = 0; x < file.Length; x++)
            {
                path2 = path2 +"/"+ file[x].FileName;

                var stream = new FileStream(path2, FileMode.OpenOrCreate, FileAccess.ReadWrite);

                file[x].CopyTo(stream);
                data[x] = path2;

                stream.Close();
            }
            ccl.InsertExceldataOk(path2);

        }
      return View();
    }

}

Смоделировал (claseBase):

 public static IConfigurationRoot Configuration;
        public void InsertExceldataOk(string fullPath)
        {

           var hasHeader = true;

           using (var con = new SqlConnection(conectionexcel))
            {
                con.Open();
                FileInfo excelFile = new FileInfo(fullPath);

                using (var epPackage = new ExcelPackage(excelFile))
                {
                    var pck = epPackage.Workbook.Worksheets.First();

                    var ws = pck.Workbook.Worksheets.First();
                    DataTable tbl = new DataTable();
                    foreach (var firstRowCell in ws.Cells[1, 1, 1,
                    ws.Dimension.End.Column])
                    {
                        tbl.Columns.Add(hasHeader ? firstRowCell.Text :
                        string.Format("Column {0}", firstRowCell.Start.Column));
                    }
                    var startRow = hasHeader ? 2 : 1;
                    for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
                    {
                        var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                        DataRow row = tbl.Rows.Add();
                        foreach (var cell in wsRow)
                        {
                            row[cell.Start.Column - 1] = cell.Text;
                        }
                    }

                using (SqlConnection con2 = new SqlConnection(conectionexcel))
                {
                      //Al cargar el archivo solo se eliminan los datos con cierto ID
                 string query = "delete from Despachos where Despacho = '039998'";

                        SqlCommand cmd = new SqlCommand(query, con2);
                        cmd.CommandType = System.Data.CommandType.Text;
                        con2.Open();
                        cmd.ExecuteNonQuery();
                        con2.Close();



                    }


                    using (var sqlCopy = new SqlBulkCopy(conectionexcel))
                        {

                           sqlCopy.DestinationTableName = "[Despachos]";
                           sqlCopy.WriteToServer(tbl);

                        }

                }
            }


        }
0
ответ дан 19.11.2019, 22:33

Теги

Похожие вопросы