【问题标题】:Import Excel file using .NET Core ASP.NET Web Application to SQL Server database使用 .NET Core ASP.NET Web 应用程序将 Excel 文件导入 SQL Server 数据库
【发布时间】:2021-06-07 22:30:16
【问题描述】:

我正在尝试将 Excel 文件导入我的代码,然后使用 NET Core MVC Web 应用程序将其传输到数据库。我想知道 Visual Studios 上的任何很棒的库和可能有很大帮助的链接。现在我正在使用 EPPlus 版本,它从 Excel 文件中获取数据并将其转换为 ToString。

我正在处理的一些代码大部分工作都在方法 import 中当我尝试将数据库和模型设置为使用其他任何东西时,字符串类型会出现如下错误:

当 IDENTITY_INSERT 设置为 OFF 时,无法为表中的标识列插入显式值

我尝试了int.Parse(),但不断出错。我尝试对运行SET IDENTITY_INSERT [StudentsList-2].[dbo].[Student] ON; 的 SQL Server 执行操作,它告诉我命令运行成功,但在运行程序时我不断收到错误消息。任何帮助或链接都会很棒!

using ImportExcel.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace ImportExcel.Controllers
{
    public class HomeController : Controller
    {
        private readonly ApplicationDbContext _dbContext;

        public HomeController(ApplicationDbContext dbContext)
        {
           _dbContext = dbContext;
        }
        public IActionResult Index()
        {
            return View();
        }
        ***public async Task<List<Countries>> Import(IFormFile file)
        {
            var list = new List<Countries>();
            using (var stream = new MemoryStream())
            {
                await file.CopyToAsync(stream);
                using (var package = new ExcelPackage(stream))
                {

                    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                    var rowcount = worksheet.Dimension.Rows;
                    var colcount = worksheet.Dimension.Columns;

                    for (int row = 2; row < rowcount; row++)
                    {
                        list.Add(new Countries {
                            CountryId=worksheet.Cells[row,1].Value.ToString().Trim(),
                            CountryName = worksheet.Cells[row, 2].Value.ToString().Trim(),
                            TwoCharCountryCode = worksheet.Cells[row, 3].Value.ToString().Trim(),
                            ThreeCharCountryCode = worksheet.Cells[row, 4].Value.ToString().Trim()
                        });
                    }
                }
            }
            //SaveDataToDb(list);
            _dbContext.Countries.AddRange(list);
            await _dbContext.SaveChangesAsync();
            
            return list;
            

        }***

       

        public IActionResult About()
        {
            ViewData["Message"] = "Your application description page.";

            return View();
        }

        public IActionResult Contact()
        {
            ViewData["Message"] = "Your contact page.";

            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

【问题讨论】:

  • 建议“我想知道 Visual Studios 上任何很棒的库和可能有很大帮助的链接”应该是 softwarerecs.stackexchange.com 上自己的问题
  • @Richard Brescher,你能提供数据库设计吗?我认为这可能是您问题的关键。

标签: asp.net sql-server asp.net-mvc visual-studio epplus


【解决方案1】:

特别是关于您遇到的错误问题,您必须在代码中运行命令以确保它在同一个连接上;它并非全局应用于所有连接。 你可以这样做:

await _dbContext.Database.ExecuteSqlCommandAsync(@"SET IDENTITY_INSERT [StudentsList-2].[dbo].[Student] ON");
await _dbContext.SaveChangesAsync();
await _dbContext.Database.ExecuteSqlCommandAsync(@"SET IDENTITY_INSERT [StudentsList-2].[dbo].[Student] OFF");

【讨论】:

  • 装订谢谢!有什么链接或网站可以让我了解更多!
  • 我不确定您想了解更多?
  • 这谈到了身份插入的范围:stackoverflow.com/questions/5791941/…
  • 活页夹再次感谢!也确实 await _dbContext.Database.ExecuteSqlCommandAsync(@"SET IDENTITY_INSERT [StudentsList-2].[dbo].[Student] ON"); _dbContext.Student.AddRange(list); ?
  • 我认为这并不重要,但是,我想之前会更安全
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多