C#实战003:Excel操作-OleDb链接Excel

本文介绍如何利用OleDb连接Excel文件,实现快速数据读取。通过设置连接字符串,可适应不同版本的Excel文件(.xls和.xlsx),并提供代码示例说明如何执行SQL语句读取指定工作表数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    OleDb把excel文件作为数据源来读取,直接用Sql语句来操作数据,并且不需要安装Office Excel就可以使用,所以用OLEDB方式读取EXCEL的速度是非常快的。但是当Excel数据量很大时,会非常占用内存,当内存不够时会抛出内存溢出的异常,容易丢失数据,因为是Sql语句来操作数据的,所以灵活性较低,如果你处理的数据不大且无需复杂操作时可以使用OLEDB方式读写EXCEL。

首先我们引入以下模块:

using System.Data;
using System.Data.OleDb;
using System.IO;

 然后在类中写如下方法即可成功链接Excel,

        public string ExcelPath = @"C:\Users\Administrator\Desktop\test.xlsx";
        public void getExcel(string ExcelPath)
        {
            if (File.Exists(ExcelPath))//判断文件是否存在
            {
                string strConn = ""; 
                FileInfo file = new FileInfo(ExcelPath);//读取excel文件名
                string fileType = file.Extension;//提取excel文件名后缀,判断文件名类型
                //----------------------------获取Excel表格数据---------------------------
                if (fileType == ".xls")
                //读取“.xls”时使用"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'" 
                    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
                else
                //读取“.xlsx”时使用 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"
                    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
                OleDbConnection myCon = new OleDbConnection(strConn);     //连接数据库    
                myCon.Open();//打开数据库
             }
       }

HDR=Yes,这代表第一行是标题,不做为数据使用,系统默认的是YES 

IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。            

IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。              

IMEX=2 时为“链接模式”,这个模式开启的 Excel 档案可同时支持“读写”用途。
完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
          
        }
        /// <summary>
        /// 读取Excel文件并将其缓存到内存中
        /// </summary>
        /// <param name="Path"></param>
        /// <returns></returns>
        public string ExcelPath = @"C:\Users\Administrator\Desktop\test.xlsx";
        public void ExcelToDS(string Path)
        {
            if (File.Exists(ExcelPath))
            {
                string strConn = "";
                FileInfo file = new FileInfo(ExcelPath);//读取excel文件名
                string fileType = file.Extension;//提取excel文件名后缀,判断文件名类型
                if (fileType == ".xls")
                    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
                else
                    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
                OleDbConnection conn = new OleDbConnection(strConn);     //连接数据库    
                conn.Open();//打开数据库
                string strExcel = "";
                strExcel = "select * from [客户排配计划$]";//定义Excel工作表单
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, conn);//从工作表中查询数据
                DataSet DS = new DataSet(); //创建数据集对象
                myCommand.Fill(DS, "table1");//填充数据集 
            }
           
        }

    }


}

欢迎关注本人的公众号:编程手札,文章也会在公众号更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProgramNotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值