如何使用 EPPlus 在 C# 中逐行读取 Excel 文件

2024-03-24

在我的 MVC 控制器中,我试图逐行读取 Excel。但是有一个问题!

我希望能够将其映射到列表。模型类包含29个字段。

public class GroupMembershipUploadInput
{

    public string chpt_cd {get;set;}
    public string cnst_mstr_id {get;set;}
    public string cnst_prefix_nm {get;set;}
    public string cnst_first_nm {get;set;}
    public string cnst_middle_nm {get;set;}
    public string cnst_last_nm {get;set;}
    public string cnst_addr1_street1 {get;set;}
    public string cnst_addr1_street2 {get;set;}
    public string cnst_addr1_city {get;set;}
    public string cnst_addr1_state {get;set;}
    public string cnst_addr1_zip {get;set;}
    public string cnst_addr2_street1 {get;set;}
    public string cnst_addr2_street2 {get;set;}
    public string cnst_addr2_city {get;set;}
    public string cnst_addr2_state {get;set;}
    public string cnst_addr2_zip {get;set;}
    public string cnst_phn1_num {get;set;}
    public string cnst_phn2_num {get;set;}
    public string cnst_phn3_num {get;set;}
    public string cnst_email1_addr {get;set;}
    public string cnst_email2_addr {get;set;}
    public string job_title {get;set;}
    public string company_nm {get;set;}
    public string grp_cd {get;set;}
    public string grp_nm {get;set;}
    public string rm_ind {get;set;}
    public string notes {get;set;}
    public string stuart_cnst_grp_key {get;set;}
    public string created_by {get;set;}
    public string created_dt {get;set;}

}

public class ListGroupMembershipUploadInput
{
    public List<GroupMembershipUploadInput> GroupMembershipUploadInputList { get; set; }
}

问题是

我应该根据列标题将 Excel 中的字段映射到此字段。像这里一样,Excel 中的列标题可以是

因此,无需硬编码,我应该能够将列标题“名字”下的值放入模型字段“cnst_first_nm”。 等等。

此列在 Excel 中也不必按此顺序。所以需要灵活处理。

我正在尝试:

                ExcelPackage ep = new ExcelPackage(new FileInfo(savedFilePath));
                ExcelWorksheet ws = ep.Workbook.Worksheets["Sheet1"];

                ListGroupMembershipUploadInput gl = new ListGroupMembershipUploadInput();

                for (int i = 3; i <= ws.Dimension.End.Row; i++)
                {
                    GroupMembershipUploadInput gm = new GroupMembershipUploadInput();

                    for (int j = ws.Dimension.Start.Column; j <= ws.Dimension.End.Column; j++)
                    {
                            //gm.cnst_first_nm = ws.Cells[i, j].Value.ToString();
                    }
                    gl.Add(gm);

                }

我无法解决它。我知道我在某个地方错过了一些东西。可以做什么?


一个简单的例子

public void readXLS(string FilePath)
{
    FileInfo existingFile = new FileInfo(FilePath);
    using (ExcelPackage package = new ExcelPackage(existingFile))
    {
        //get the first worksheet in the workbook
        ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
        int colCount = worksheet.Dimension.End.Column;  //get Column Count
        int rowCount = worksheet.Dimension.End.Row;     //get row count
        for (int row = 1; row <= rowCount; row++)
        {
            for (int col = 1; col <= colCount; col++)
            {
                Console.WriteLine(" Row:" + row + " column:" + col + " Value:" + worksheet.Cells[row, col].Value.ToString().Trim());
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 EPPlus 在 C# 中逐行读取 Excel 文件 的相关文章

  • 4 x 3 锁图案

    我遇到了这个 它要求计算在 4x3 网格中可以制作特定长度的锁定图案的方式数 并遵循规则 可能有些点不能包含在路径中 有效的模式具有以下属性 图案可以使用第一次接触的点序列来表示 与绘制图案的顺序相同 从 1 1 到 2 2 的图案与图案不
  • 了解子表单何时关闭

    我有一个带有按钮的 Form1 当您单击按钮时 将执行以下代码块 Form2 frm new Form2 frm Name Form musteriNumarasi ToString frm Text Kullan c musteriNum
  • 为什么 C++ Concepts TS 中同时存在变量和函数概念?

    我一直在看 C 1zN4377 http www open std org jtc1 sc22 wg21 docs papers 2015 n4377 pdfGCC 6 中正在实现的概念 TS 草案 我不明白拥有两种不同概念的目的 变量概念
  • 如何在 ASP.NET 5/vNext/Core 中使用 Elmah?

    我对如何在 ASP NET 5 MVC 6 项目中使用 Elmah 有点困惑 我从 nuget 得到了包 它添加了 Elmah Mvc 2 1 2 到project json 中的依赖项 我不知道从这里到哪里去 以前 nuget 会向 we
  • 单击按钮本地化应用程序

    我在我的项目 mainMaster 页面中找到了 imageButtons
  • 序列化 .NET WCF 服务的类型时出现问题:服务 WSDL 在 XSD 中定义空类型

    我正在使用 WCF 编写一个 Web 服务 我创建了数据合约 我创建了我的服务合同 界面 我定义了方法 其参数的类型与数据契约相同 我实现了创建服务类的服务合同 我使用 svc 文件和 IIS 托管我的服务 我尝试了我的服务 寻找http
  • ReportViewer“缺少 URL 参数:名称”

    在一个网络应用程序中 我正在处理 ReportViewer 时不断出现错误 缺少 URL 参数 名称 我找到了原因 但没有找到解决方案 导致报告查看器出现异常的 url Reserved ReportViewerWebControl axd
  • 如何将整个流读入 std::string ?

    我正在尝试将整个流 多行 读入字符串中 我正在使用这段代码 它有效 但它冒犯了我的风格感 当然有更简单的方法吗 也许使用字符串流 void Obj loadFromStream std istream stream std string s
  • 在 C 中使用另一个结构中的二维结构数组的编码问题

    我正在使用一个二维结构数组 它是另一个结构的一部分 这不是我做过很多事的事情 所以我遇到了问题 该函数在接近末尾的 测试 for 循环后最终失败 它在出现段错误之前正确打印出一行 我的代码中将数据读入虚拟二维结构数组的部分工作得很好 所以它
  • 如何在 MSBuild NuGet 包生成的 .nuspec 中注入自定义依赖项

    我正在尝试迁移到使用 MSBuildPack支持使用 csproj 生成项目 NuGet 包 其中在开发过程中使用本地 dll 来构建项目 但在使用 MSBuild 打包 项目时需要替换 交换它们以引用生成的 nuspec 中的外部 NuG
  • 为什么 `boost::any` 比 `void*` 更好?

    有什么先天优势boost any and boost any cast提供超过使用void and dynamic cast 优点是boost any比类型安全得多void E g int i 5 void p i static cast
  • 模板是如何实例化的?

    这是一个练习 来自C 入门第五版 练习 16 27 对于每个带标签的语句 解释什么 如果有 实例化发生 如果实例化了模板 请解释原因 如果 不 请解释为什么不 第677页 template
  • 使用 CryptUnprotectData 解密 WEP wlan 配置文件密钥

    我正在尝试使用解密 WEP 配置文件的密钥加密解除数据保护 http msdn microsoft com en us library windows desktop aa380882 28v vs 85 29 aspx 我获取配置文件密钥
  • 在C中更改函数内的数组

    我正在学习 C 并且很困惑为什么在 main 中创建的数组不会在函数内部更改 我假设传递的数组是一个指针 并且更改指针应该更改数组 对吧 有人可以解释这种情况下发生了什么吗 谢谢你的帮助 int main int i length 10 i
  • 在源代码和预编译二进制文件之间切换

    我们的应用程序中有大量的库 库是用 C 或 C 编写的 平台 net Framework Windows 64 位 将所有内容编译为源代码需要花费大量时间 我们正在考虑切换到预构建的二进制文件 但我们仍然希望保留返回源代码的可能性 作为版本
  • 从 Asp.Net Core 控制器返回 IAsyncEnumerable 和 NotFound

    返回一个控制器操作的正确签名是什么IAsyncEnumerable
  • 使用 JSON.NET 反序列化一些 JSON

    我对 JSON 非常陌生 我需要解析 API 提供的一些内容 谷歌快速搜索出现了JSON NET http james newtonking com pages json net aspx 所以我现在尝试使用它将此 JSON 解析为列表对象
  • 类型 '' 未映射

    我已经尝试修复这个错误有一段时间了 每当我的应用程序尝试创建数据上下文的实例时 我都会收到此错误 下面是代码 using System using System Collections Generic using System Linq u
  • 计算 .NET Core 项目的代码指标?

    我正在研究 ASP NET Core 和 NET Core 项目 对于经典的 C 项目 Visual Studio 2015 具有计算代码指标的功能 对于 NET Core 预览版 2 工具中缺少支持 在工具更加完整之前 有人知道解决方法吗
  • win32 内容已更改,但除非移动窗口,否则不会显示更新

    我的 win32 GUI 内容每秒都会更改 但除非手动移动窗口 否则不会显示更新 我尝试每秒弹出一个消息框来触发窗口刷新 它成功了 因此 这证明我的内容确实发生了变化 但窗口没有更新 我希望刷新窗口而不是每次都弹出消息框 有没有这样的窗口功

随机推荐

  • 如何在 Laravel 5.6 中创建自定义 404 页面?

    我还没有找到任何教程来解决如何在这个特定版本的 Laravel 5 6 中 正确 创建 404 页面 我发现一些过时的内容与 Laravel 5 6 的工作方式有点不同 任何输入都会有帮助 我通过阅读 Laravel 文档 自定义 HTTP
  • TypeORM 不支持实体装饰器上的数据库设置

    我试图将我的 TypeORM 项目分离到多个数据库上 因为它的规模不断增长 并且它的组件非常离散 但相互关联 所以我需要能够跨数据库建立关系 我正在尝试使用database设置在 Entity装饰器 如下所述 https typeorm i
  • 在 Elixir 中部署时更改后端/模块?

    如何实现一个可替换的后端 或基本上任何部分或模块 以便可以在 Elixir 中的配置 部署时进行替换 我的具体情况是一个简单的网络应用程序 在本例中使用 Phoenix 但我猜这个问题也适用于其他情况 我有一个非常简单的后端 使用Agent
  • 从 iPhone 上的我的应用程序调用官方 *设置* 应用程序

    在我的应用程序中的某一时刻 我想将用户重定向到官方Settings应用程序 如果可以的话我也想直接去Network内的部分Settings app 我想我需要的是Settings应用程序的 url 方案和构建我的请求的格式 但我怀疑调用这样
  • WebActivatorEx 与 OwinStartup

    例如 在 Web API 应用程序中 有什么区别 assembly OwinStartup typeof MyClass MyMethod and assembly WebActivatorEx PreApplicationStartMet
  • 当下载发生在新选项卡中时,如何在 Selenium (Java) 中无头下载文件?

    我有一个网页 当我单击按钮时 它会打开另一个选项卡 然后在其中几秒钟后下载 csv 文件 我试图无头自动化 但我无法做到这一点 我正在使用下面的代码 但我认为以下解决方案适用于在同一窗口中进行下载 我如何调整它以适合我的情况 代码工作正常
  • 如何使用 bluez API 扫描低功耗蓝牙设备

    我是使用 BlueZ 进行低功耗蓝牙编程的新手 我想开发一个本机代码 c 来使用 BlueZ API 在 Android 4 0 3 下扫描附近的低功耗蓝牙设备 有人知道我应该使用哪些 BlueZ 方法吗 如果您想编写本机 C 代码来扫描
  • Drupal 7:如何更改图像字段小部件“alt”或标题“标签

    我正在尝试更改节点添加表单上的图像小部件中的 alt 和 标题 标签 我已经尝试过这两个钩子 hook field widget form alter hook form alter 我无法找到需要去哪里才能成功更改标签 有人可以指导我找到
  • Spring 的 LoadTimeWeaver 代理未启动

    我正在尝试使用 Spring 和 AspectJ 实现加载时编织 据我所知 我已正确配置所有内容 但当我尝试运行集成测试时 我不断收到错误 org springframework beans factory BeanCreationExce
  • React Navigation v5:如何与 Branch.io 一起使用

    我们有一个利用 Branch io 通用链接的应用程序 按照以下文档 https help branch io developers hub docs react native read deep link https help branc
  • 如何使用反射获取对象的属性?

    我知道我能做到 foreach PropertyInfo property in myobject GetType GetProperties if property DeclaringType ToString myobject GetT
  • Cuda 计算模式和“CUBLAS_STATUS_ALLOC_FAILED”

    我的集群中有一台主机 有 8 个Nvidia K80我想将其设置为每个设备最多可以运行 1 个进程 以前 如果我在主机上运行多个作业并且每个作业都使用大量内存 它们都会尝试访问同一设备并失败 我将所有设备设置为计算模式 3 E Proces
  • ActivityThread:找不到源

    我正在开发一个 Android 应用程序来比较两个静态图像 但是当我尝试调试该项目时 我在 ActivityThread 中找不到源代码 这是我的代码 查找器类 package com example testmatching import
  • Laravel 中的 Associate()

    我有 2 个模型 一个用户和一个地址 自从我读到它以来 我仍在尝试 Associate https laravel com docs 5 6 eloquent relationships updating belongs to relati
  • 为Windows应用程序实现webrtc数据通道[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有谁知道如何向用 C 构建的 Windows 应用程序实现 WebRTC DataChannel API 以便在 NAT 后面的客户端
  • Logstash 配置:检查布尔字段是否存在

    使用Logstash 1 4 2 我有一个字段myfield这是我的 JSON 文档中的布尔值 为了检查它是否存在 不关心布尔值 我使用了 if myfield exists else doesn t exist 测试该条件语句的结果是 m
  • 如何将换行符放入 R 中 xtable 的列标题中

    我有一个数据框 我正在将其放入sweave http www stat uni muenchen de leisch Sweave 使用 xtable 的文档 但是我的列名之一很长 我想将其分成两行以节省空间 calqc table lt
  • Weblogic:调用不带架构名称的 DB2 存储过程(属性 currentSchema)

    我有一个在 Weblogic 上运行的 Java 应用程序 应用程序需要访问 DB2 数据库中的存储过程 因此 JDBC 数据源是通过其 JNDI 名称来配置和访问的 数据源 ClassDriver com ibm db2 jcc DB2D
  • XSLT 生成 UUID

    如何使用纯 XSLT 生成 UUID 基本上是寻找一种使用 XSLT 创建独特序列的方法 该序列可以是任意长度 我正在使用 XSLT 2 0 这是一个好例子 http www pure xml com cblog index php arc
  • 如何使用 EPPlus 在 C# 中逐行读取 Excel 文件

    在我的 MVC 控制器中 我试图逐行读取 Excel 但是有一个问题 我希望能够将其映射到列表 模型类包含29个字段 public class GroupMembershipUploadInput public string chpt cd