C#读取Excel文件

2023-11-05

1. OleDb方式 [using System.Data.OleDb]

    Office 2007及以上版本需要使用"Microsoft.ACE.OLEDB.12.0" 的连接字符串,Office 2003及以下版本需要使用"Microsoft.Jet.OLEDB.4.0"。

public IList<ReportItem> LoadExcelFile(string excelFileName)
        {
            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';";            //Sql statement
            //string strExcel = string.Format("select * from [{0}$]", strSheetName);
            string query = "select * from   [sheet1$]";

            List<ReportItem> reportList = new List<ReportItem>();

            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                OleDbCommand myCommand = new OleDbCommand(query, conn);
                conn.Open();
                OleDbDataReader rdr = myCommand.ExecuteReader();
                // Always call Read before accessing data.
                while (rdr.Read())
                {
                    ReportItem item = new ReportItem()
                    {
                        LFileName = rdr.GetString(0),
                        RFileName = rdr.GetString(1),
                        ResID = rdr.GetString(2),
                        CoID = rdr.GetString(3),
                        SouString = rdr.IsDBNull(4) == true ? string.Empty : rdr.GetString(4),
                        TaString = rdr.IsDBNull(5) == true ? string.Empty : rdr.GetString(5),
                        Cmts = rdr.GetString(6),
                        Cul = rdr.GetString(7),
                        TarCul = rdr.GetString(7),
                        ModifiedDate = rdr.IsDBNull(8) == true ? null : rdr.GetDateTime(8).ToShortDateString(),
                        Rul = rdr.GetString(9),
                        Mes = rdr.GetString(10),
                        };
                    reportList.Add(item);
                }
                rdr.Close();
            }
            return reportList;
        }


2. Microsoft.Office.Interop.Excel

public IList<ReportItem> LoadExcelFile(string excelFileName)
        {
            List<ReportItem> reportList = new List<ReportItem>();
            string RunDateTime = DateTime.UtcNow.ToLongDateString();
            Excel.Application excel = null;
            Excel.Workbooks wbs = null;
            Excel.Workbook wb = null;
            Excel.Worksheet ws = null;
            Excel.Range range1 = null;

            try
            {
                excel = new Excel.Application();
                //excel.UserControl = true;
                excel.DisplayAlerts = false;

                wb = excel.Application.Workbooks.Open(excelFileName, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);
                ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;

                int rowCount = ws.UsedRange.Cells.Rows.Count;
                //int colCount = ws.UsedRange.Cells.Columns.Count;

                for (int i = 2; i <= rowCount; i++)
                {
                    range1 = ws.Cells.get_Range("A" + i.ToString(), "K" + i.ToString());
                    ReportItem item = new ReportItem()
                    {
                        LFileName = ((Excel.Range)range1.Cells[1, 1]).Value.ToString(),
                        RFileName = ((Excel.Range)range1.Cells[1, 2]).Value.ToString(),
                        ResID = ((Excel.Range)range1.Cells[1, 3]).Value.ToString(),
                        ComResID = ((Excel.Range)range1.Cells[1, 4]).Value.ToString(),
                        SouString = ((Excel.Range)range1.Cells[1, 5]).Value == null ? string.Empty : ((Excel.Range)range1.Cells[1, 5]).Value.ToString(),
                        TarString = ((Excel.Range)range1.Cells[1, 6]).Value == null ? string.Empty : ((Excel.Range)range1.Cells[1, 6]).Value.ToString(),
                        Cos = ((Excel.Range)range1.Cells[1, 7]).Value == null ? string.Empty : ((Excel.Range)range1.Cells[1, 7]).Value.ToString(),
                        Cul = ((Excel.Range)range1.Cells[1, 8]).Value.ToString(),
                        TarCulture = ((Excel.Range)range1.Cells[1, 8]).Value.ToString(),
                        ModifiedDate = ((Excel.Range)range1.Cells[1, 9]).Value.ToString(),
                        Ru = ((Excel.Range)range1.Cells[1, 10]).Value.ToString(),
                        Mes = ((Excel.Range)range1.Cells[1, 11]).Value.ToString(),
                                            };
                    reportList.Add(item);
                }
                return reportList;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                if (excel != null)
                {
                    if (wbs != null)
                    {
                        if (wb != null)
                        {
                            if (ws != null)
                            {
                                if (range1 != null)
                                {
                                    System.Runtime.InteropServices.Marshal.ReleaseComObject(range1);
                                    range1 = null;
                                }
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
                                ws = null;
                            }
                            wb.Close(false, Nothing, Nothing);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
                            wb = null;
                        }
                        wbs.Close();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs);
                        wbs = null;
                    }
                    excel.Application.Workbooks.Close();
                    excel.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                    excel = null;
                    GC.Collect();
                }
            }
        }


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#读取Excel文件 的相关文章

随机推荐

  • C++57个入门知识点_25 new与delete(对于对象: new创建时先分配堆内存后调用构造函数,delete先调用析构,后释放堆空间;malloc和free只是堆内存操作,不会调用构造和析构)

    本篇开始我们将学习C语言中没有 C 中常用的运算符new及delete C 57个入门知识点 22 构造函数和析构函数的调用时机 可手动调用构造和析构 访问权限一般为公有 局部对象声明时构造 出作用域析构 全局对象主函数前构造 出主函数后析
  • 【教程】Tkinter实现Python软件自动更新与提醒

    转载请注明出处 小锋学长生活大爆炸 xfxuezhang cn 文件下载 https download csdn net download sxf1061700625 88134425 示例演示 参考代码 import os import
  • D-Link DCS 密码泄露漏洞

    0x01 前言 本次测试仅供学习使用 如若非法他用 与本文作者无关 需自行负责 0x02 漏洞描述 D link DCS是一款成像色彩为彩色 是一款网络摄像机 D link DCS系统存在密码泄露漏洞 攻击者通过漏洞可以获取后台权限 0x0
  • Linux用户权限

    目录 1 Linux中的正常权限有 读 写 执行权限 2 用户和组 2 1牵涉的相关命令 2 2创建用户牵涉到的文件 2 3用户和组的关系 2 4用户信息 2 5添加用户 useradd命令 2 6更改和删除用户 usermod和userd
  • 【Git】创建分支报错(cannot lock ref ‘refs/heads/***/***‘)

    本周刚遇到的问题 创建新分支的时候 报错信息如下 cannot lock ref refs heads refs heads exists cannot create refs heads 1 问题原因 分为两种情况 一是本地已经存在同名分
  • Redis数据结构01key

    key 1 keys KEYS pattern 查找所有符合给定模式 pattern 的 key KEYS 匹配数据库中所有 key KEYS h llo 匹配 hello hallo 和 hxllo 等 占一个字符 KEYS h llo
  • Pentaho Report Designer 教程(一)初识

    软件版本 Pentaho Report Designer 5 0 1 stable 一 Pentaho Report Designer 的安装 Pentaho Report Designer PRD 由Java编写所以在使用之前应该先安装J
  • 阿里java编程规范

    前言 阿里巴巴Java开发手册 是阿里巴巴集团技术团队的集体经验总结 经历了多次大规模一线实战的检验及不断的完善 反馈给广大开发者 现代软件行业的高速发展对开发者的综合素质要求越来越高 因为不仅是编程知识点 其它维度的知识点也会影响到软件的
  • 那些危险的docker删除命令

    文章目录 杀死所有正在运行的容器 删除所有已经停止的容器 删除所有未打 dangling 标签的镜 删除所有镜像 强制删除 无法删除的镜像 杀死所有正在运行的容器 docker kill docker ps a q 删除所有已经停止的容器
  • windows的Wsl和Ununtu22.0.4,安装到D盘

    1 开启windows的WSL与虚拟平台 支持 首先在Win11开始菜单搜索 Windows 功能 打开功能配置界面 勾选Linux子系统以及虚拟机平台2个选项 配置后 需要按照提示 重启电脑 2 Windows安装wsl 通过如下命令查看
  • ElasticSearch学习02——Kibana安装

    ElasticSearch学习02 Windows下Kibana安装 Kibana是界面化的查询数据的工具 下载时尽量下载与ElasicSearch一致的版本 1 下载对应版本的Kibana 有了ElasticSearch安装的经验 我们发
  • Linux·主流嵌入式操作系统(RTOS)

    满足实时控制要求的嵌入式操作系统 RTOS 操作系统 以下介绍14种主流的RTOS 分别为 Clinux C OS II eCos FreeRTOS mbed OS RTX Vxworks QNX NuttX 而国产的嵌入式操作系统包括都江
  • Python分治法实现大整数相乘

    思路是将大整数 A B 通过分治法拆分成 A1 A2 B 如果A1数位长度仍然大于某个阈值 以下代码为8位数 则继续拆分 B也一样 辛辛苦苦写完后 发现题友直接使用python自带运算AB也能通过 查证得知Python整数大小没有限制 如果
  • 从原理图更新指定元件的封装到PCB——Altium Designer 18.0笔记

    从原理图更新指定元件的封装到PCB Altium Designer 18 0笔记 步骤1 在原理图编辑器下执行 Update 命令 步骤2 勾选所需的更改 步骤3 执行更改 步骤1 在原理图编辑器下执行 Update 命令 如果我们在原理图
  • 信息系统高级项目管理师英语词汇(二)-常见项目管理词汇

    常见项目管理词汇 Day1 数据 Data 工作绩效数据 Work Performance Data 工作绩效信息 Work Performance Information 工作绩效报告 Work Performance Report 项目
  • 数据处理技巧(8):MATLAB读取txt文本数据并转换成列向量

    MATLAB读取txt文本数据并转换成列向量 1 目标 2 处理步骤 将逗号替换成空格 补齐数据 MATLAB程序 运行查看结果 3 相关链接 1 目标 需要把txt中的数据以列向量的形式保存到excel表格中 Txt中的数据如下 观察数据
  • BigDecimal为何能解决浮点数运算时精度丢失问题(底层)

    1 为什么浮点数运算有精度丢失风险 原因 计算机在存储浮点数时 指数和尾数能占用的bit位是固定的 十进制小数在转二进制小数时乘2取整 直到不存在小数为止 如果在运算时超过尾数限制的bit位长度 就会被截断 所以就导致小数精度发生损失 解决
  • 来自资深程序员的 3 条锦囊:永远不要辞职,除非……

    今晨到公司比较早 于是随手打开了 Medium 浏览了会儿 看到了一篇文章很有意思的一个点 作者说 在成为程序员的早期 总是少不了攀比 比如做着同样的工作 但朋友所得的报酬比自己高 有朋友是大 V 有着非常多的粉丝 也有朋友热衷炒股投资挣得
  • 射频滤波器分析报告(声表面波滤波器/BAW/超声)

    目录 一 射频芯片技术与产品概述 二 5G时代滤波器需求潜力巨大 三 全球滤波器市场现状 3 1 基站 3 2 手机端 四 射频芯片国内发展情况 4 1 国内射频芯片概况 4 2 国内射频滤波器发展情况 4 3 BAW的重重困难 4 4 终
  • C#读取Excel文件

    1 OleDb方式 using System Data OleDb Office 2007及以上版本需要使用 Microsoft ACE OLEDB 12 0 的连接字符串 Office 2003及以下版本需要使用 Microsoft Je