C# 读取Execl文件3种方法

这篇具有很好参考价值的文章主要介绍了C# 读取Execl文件3种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法 

1,使用OLEDB可以对excel文件进行读取

1.1C#提供的数据连接有哪些

        对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。

Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。

Sqlconnetcion类的对象连接是SQL Server数据库;

OracleConnection类的对象连接Oracle数据库;

OleDbConneetion连接支持OLE DB的数据库,如Access;

而OdbcConnection类的对象连接支持ODBC的数据库。

与数据库的所有通讯都是通过Connection对象来完成的。

1.2介绍使用OleDbonnection来链接各种数据源

        ADO.NET的数据访问对象有Connection,Command、DataReader和DataAdaper等,由于每种.NET Data Provider都有自己的数据访问对象,因此他们的使用方式相似。这里主要介绍OLEDB.NET Data Provider的各种数据访问对象的使用。

OleDbConnection对象

在数据访问中首先必须建立到数据库的物理连接。OLEDB.NET Data Provider 使用OleDbConnection类的对象标识与一个数据库的物理连接。

OledbConnection类的常用属性
属性 说明
ConnectionString  获取或设置用于打开数据库的字符串
ConnectionTimeOut 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间
Database 获取当前数据库或连接打开后要使用的数据库名称
DataSource 获取数据源的服务器名或文件名
Provider 获取在连接字符串的“Provider = ” 子句中指定的OLEDB提供程序的名称
State 获取连接的当前状态
OleDbConnection类的常用方法
方法 说明
Open 使用ConnectionString所指定的属性设置打开数据库连接
Close  关闭与数据库的连接,这是关闭任何打开连接的首选方法
CreateCommand 创建并返回一个与OleDbConnection关联的OleDbCommand对象
ChangeDatabase 为打开的OleDbConnection更改当前数据库

 1.3建立连接字符串ConnectionString

1、直接建立连接字符串

直接建立连接字符串的方式是先创建一个OleDbConnection对象,将其ConnectionString属性设置为如下:

Provider = Microsoft.Jet.OLEDB.4.0;Data Sourse = Access数据库;UserId = 用户名;Password = 密码;

  其中Provider和DataSource是必选项,如果Access数据库没有密码,UserId和Password可以省略。由于Access数据库是基于文件的数据库,因此在实际项目中应该将Data Source的属性值转换为服务器的绝对路径。最后用Open方法打开连接。

1.4代码

        public DataSet ReadExcelToDataSet(string path)
        {
            //连接字符串
            /* 备注:
            	添加 IMEX=1 表示将所有列当做字符串读取,实际应该不是这样,
            	系统默认会查看前8行如果有字符串,则该列会识别为字符串列。
            	如果前8行都是数字,则还是会识别为数字列,日期也一样;
            	如果你觉得8行不够或者太多了,则只能修改注册表HKEY_LOCAL_MACHINE/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows,
            	如果此值为0,则会根据所有行来判断使用什么类型,通常不建议这麽做,除非你的数据量确实比较少
            */
            string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;IMEX=1';";

            using (OleDbConnection conn = new OleDbConnection(connstring))
            {
                conn.Open();
                System.Data.DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });//存放所有的sheet
                DataSet set = new DataSet();
                for (int i = 0; i < sheetsName.Rows.Count; i++)
                {
                    string sheetName = sheetsName.Rows[i][2].ToString();
                    string sql = string.Format("SELECT * FROM [{0}]", sheetName);
                    OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring);

                    ada.Fill(set);
                    set.Tables[i].TableName = sheetName;
                }

                return set;

            }
        }

2 ,使用Office自带的库

2.1安装库

c# 读取excel,C#,c#,execl

c# 读取excel,C#,c#,execl

2.2代码

        //2 ,使用Office自带的库
        public System.Data.DataSet GetExcelData(string excelFilePath)
        {
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Sheets sheets;
            Microsoft.Office.Interop.Excel.Workbook workbook = null;
            object oMissiong = System.Reflection.Missing.Value;

            DataSet dataSet = new DataSet();
            string cellContent;
            try
            {
                if (app == null)
                {
                    return null;
                }
                workbook = app.Workbooks.Open(excelFilePath, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong,
                    oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);

                sheets = workbook.Worksheets;
                for (int p = 1; p <= sheets.Count; p++)
                {
                    System.Data.DataTable dt = new System.Data.DataTable();
                    Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(p);//读取第一张表

                    for (int j = 1; j <= workSheet.UsedRange.Columns.Count; j++)
                    {

                        Range _range = (Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, j];
                        if (_range.Text.ToString().Trim() == "")
                            dt.Columns.Add("EQUIPMENT");
                        else
                            dt.Columns.Add(_range.Text.ToString().Trim());

                    }
                    for (int i = 2; i <= workSheet.UsedRange.Rows.Count; i++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int j = 1; j <= workSheet.UsedRange.Columns.Count; j++)
                        {
                            Range _range = (Microsoft.Office.Interop.Excel.Range)workSheet.Cells[i, j];
                            cellContent = (_range.Value2 == null) ? "" : _range.Text.ToString().Trim();
                            dr[j - 1] = cellContent;
                        }
                        dt.Rows.Add(dr);
                    }
                    dataSet.Tables.Add(dt);
                }
            }
            finally
            {
                workbook.Close(false, oMissiong, oMissiong);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
                workbook = null;
                app.Workbooks.Close();
                app.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                app = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return dataSet;
        }

3,利用ExcelDataReader 读取excel文件

3.1安装库

c# 读取excel,C#,c#,execl

 3.2代码

        //3,利用ExcelDataReader 读取excel文件
        public DataSet ReadExcelToDataSet1(string fileNmaePath)
        {
            FileStream stream = null;
            IExcelDataReader excelReader = null;
            DataSet dataSet = null;
            try
            {
                //stream = File.Open(fileNmaePath, FileMode.Open, FileAccess.Read);
                stream = new FileStream(fileNmaePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            }
            catch
            {
                return null;
            }
            string extension = Path.GetExtension(fileNmaePath);

            if (extension.ToUpper() == ".XLS")
            {
                excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
            }
            else if (extension.ToUpper() == ".XLSX")
            {
                excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            }
            else
            {
                MessageBox.Show("格式错误");
                return null;

            }
            //dataSet = excelReader.AsDataSet();//第一行当作数据读取
            dataSet = excelReader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true
                }
            });//第一行当作列名读取
            excelReader.Close();
            return dataSet;
        }

结果

c# 读取excel,C#,c#,execl

参考文献

c#读取Excel表数据_c# 读取excel文件内容-CSDN博客

https://www.cnblogs.com/vaevvaev/p/6873367.html文章来源地址https://www.toymoban.com/news/detail-730926.html

到了这里,关于C# 读取Execl文件3种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 忘记文档密码,教你破解WORD/EXECL/PPT文件加密密码

    “ 大家办公时,有设置密码习惯,并且容易忘记密码,今天给大家提供一款超好用得小工具,。不定时更新软件、高效率工具小福利!!!” 软件:Advanced OfficePassword Recovery 今天给大家带来一款破解Excel密码的神器! 涉及到重要文件都会进行加密,确保内容不泄露的情况,

    2024年02月06日
    浏览(77)
  • vue element-ui表格(el-table)数据导出execl文件

    功能实现:element UI 的el-table数据导出为execl文件 使用到插件:xlsx、file-saver exportExecl.js 代码如下: 页面代码如下:

    2024年02月14日
    浏览(42)
  • C#文件读取的全局配置编程方法

    C#怎样在类库或者应用入口从配置文件读取参数,并作用到全局。 面向对象的程序有很多类库分布在很多cs文件,如何全局起作用。 如何从可读可编辑的文本导入配置。 静态类保存全局变量。 json文件保存,可读。Newtonsoft.json 软件导入方便。 关于newtonsoft开源许可:\\\"Json.NET

    2024年02月14日
    浏览(31)
  • c#关于文件夹/文件/文本读取遍历,写入还有表格的读取的一些方法

    c#遍历文件夹下的各种文件 将一些log写入到文本文件中: fs.Seek(offset, whence);移动文件读取的指针到指定位置 offset:开始的偏移量,也就是代表需要移动偏移的字节数 whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始

    2024年02月01日
    浏览(40)
  • EasyExcel实现execl导入导出

    在实际开发中,处理 Excel 文件是一个常见的需求。EasyExcel 是一个基于 Java 的开源库,提供了简单易用的 API,可以方便地读取和写入 Excel 文件。本文将介绍如何使用 EasyExcel 实现 Excel 导入功能,以及一些相关的技巧和注意事项。 在开始之前,我们需要准备好 EasyExcel 的环境。

    2024年02月09日
    浏览(29)
  • QT笔记——QtXlsx操作Execl

    使用第三方库QtXlsx来操作execl 环境:vs2019 +qt5.12.2 第一步: 我们需要找到对应的下载QtXlsx的第三方库的下载路径: QtXlsx下载 第二步: 编译我们的QtXlsx,看了网上有很多中的例子,我这边暂时只举例 vs+qt编译我们的QtXlsx 解压我们下载下来得到的文件夹 打开我们的“ src ”文件

    2023年04月15日
    浏览(16)
  • 用python合并execl做统计分析

    背景: 我们有项目问题记录的表格,每一个项目都会反馈来一个execl表格,表格的格式都是统一的,我需要定期把这些项目上反馈来的表格进行统计,但是表格非常多,我要每个都统计出来在来相加,这样操作很麻烦,所以我想有没有一个方法可以把所有的execl 都合并成为一

    2024年02月16日
    浏览(29)
  • 使用element实现导入execl表格的功能

    现如今后台管理项目中越来越人性化,文件上传,文件的下载(主页中都有)表格的导入和导出。 今天给大家搞个前后端联调的导入表格的功能,废话不多说,咱直接上代码吧!!!! 代码后面有对代码的解析,方便大家根据自己的需求进行行对的调整。 2。通过第三方插件

    2024年01月25日
    浏览(22)
  • R语言中的execl数据转plink

    点击这个黄色的按钮就可以弹出外部链接的方式 创建一个数据框的方式 我们创建一个三行三列的数据方式 r语言数据方式必须创建的这个方式 我们在这个表中添加一个 bmi 数据方式,写好数据格式就可以了 bmi 我们也可以写成公式的方式 我们可以从数据表格中选出需要的数据

    2024年04月28日
    浏览(16)
  • VS2022 C# 读取 excel 2023年

    今天是2023年6月26日,我有一个excel表要读数据,然后放到winform程序来处理,网上的资料太旧,很多用不起来,试了一个可以使用,记录一下: 一、excel文件后缀需要小写。 二、用VS2022建一个winform程序,在NuGet中安装NPOI 三、C#程序代码读取excel数据,感觉速度还是可以,很快

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包