C# 在Angular中导入excel文件并将数据传递到ASP.NET核心API项目中

C# 在Angular中导入excel文件并将数据传递到ASP.NET核心API项目中,c#,excel,file,asp.net-core,asp.net-web-api,C#,Excel,File,Asp.net Core,Asp.net Web Api,因此,情况如下。我有一个角度前端项目,我想从前端导入一个excel文件以及一些附加属性 前端我会处理,但后端我有几个问题: 在excel文件的后端,我应该接收什么作为变量类型 我想从excel文件中获取数据,只获取特定数据。例如,我只有一张工作表,其中有行名称、年龄和事务数。我只想获取事务的名称和数量,并将该信息保存在应用程序中的类的新实例中 如何执行此操作?必须在启动 首先,在asp中,您需要使用IFormFile变量定义方法或使用FileUpload帮助程序类 然后需要将数据移动到流中,例如

因此,情况如下。我有一个角度前端项目,我想从前端导入一个excel文件以及一些附加属性

前端我会处理,但后端我有几个问题:

  • 在excel文件的后端,我应该接收什么作为变量类型
  • 我想从excel文件中获取数据,只获取特定数据。例如,我只有一张工作表,其中有行名称、年龄和事务数。我只想获取事务的名称和数量,并将该信息保存在应用程序中的类的新实例中

  • 如何执行此操作?

    必须在启动

    首先,在asp中,您需要使用IFormFile变量定义方法或使用FileUpload帮助程序类

    然后需要将数据移动到流中,例如ifformfile.CopyToAsync(流)

    最后打开电子表格进行只读访问,以便读取数据

    这看起来像这样

    public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
    {
        foreach(var file in files)
        {
            using var mem = new MemoryStream();
            await file .CopyToAsync(mem);
            var doc = SpreadsheetDocument Open(mem, false);
            ...
    
    公共异步任务onpostPloadSync(列表文件)
    {
    foreach(文件中的var文件)
    {
    使用var mem=new MemoryStream();
    等待文件.CopyToAsync(mem);
    var doc=电子表格文档打开(mem,false);
    ...
    
    这将打开该文件并将其中的数据解析为excel电子表格


    然后,您可以使用电子表格方法从文档内部提取所需的数据

    取决于您在前端执行的操作您是否要将文件上载到asp,是否要将文件读入js对象并以这种方式发送数据,是否要在发送数据之前对数据进行操作等?如果您只是想上传文件,然后ASP将需要设置读取流,然后您可以将其传递到open xml nugget包中进行处理,这是因为xlsx是一组压缩的xml文件,如果您要在前端处理该文件,那么您将向ASP发送xml或JSON,然后将其映射到您已确认的对象guredASP文件处理可在此处找到在前端打开XML SDK here@MikeT我只是上传文件并将其传递给控制器。我不想将该文件保存在任何地方,只想从中提取数据,将其分配给模型,然后将信息保存在数据库保存该文件是一项要求,即使只是临时保存re一旦完成,它就会被删除,正如我提供的链接中所指出的“任何超过64KB的单个缓冲文件都会从内存移动到磁盘上的临时文件。”