OLEDB访问本地Excel

定义:

        OLEDB是微软设计的通向不同的数据源的低级应用程序接口。命名空间为System.Data.Oledb。


特点:

        使用Microsoft jet提供的程序访问Excel工作薄,将Excel文件作为数据源来读写。

        优点:简单迅速,可以操作较高版本的Excel,无需安装Excel应用程序。

        缺点:只能进行有限的操作,无法设置格式。

c#环境下的构成:

        

"Provider =;data Source=;Extended Properties=\"Excel 8.0;HDR=yes;IMEX=1;\""
  1. Provider 提供者名称;提供者根据Excel的版本不同可分为两种:
    1. Microsoft.Jet.OLEDB.4.0 主要是针对Excel的格式为.xls
    2. Microsoft.ACE.OLEDB.12.0 主要针对Excel的格式为.xlsx和.xls
  2. Data Source:Excel的路径;
  3. Extended Properties:设置Excel的特殊属性;
  4. HDR:取值Yes、No  YES:表示第一行包含列名,在计算行数时就不包含第一行;
  5. IMEX:取值如下  0:导入模式   1: 导出模式   2:混合模式(这一步需要根据需求进行设置,否则会由于权限不够导致无法读写成功)

 操作流程:

        实例化对象=》修改对象参数=》连接到Excel=》创建Excle=》插入数据=》查询数据=》删除数据=》修改数据

实例操作:

  • 连接数据库.xls
  • /* 连接Xls类型Excel*/
    public void ConnectExcel(string path)
        {
         string connectString = $"Provider = Microsoft.Jet.OLEDB.4.0; Data Source ={path};Extended Properties =\"Excel 8.0;HDR=yes;IMEX=2;\"";
         con = new OleDbConnection(connectString);
         con.Open();
         var result = con.State;
         this.ConnectStatus = con.State == System.Data.ConnectionState.Open ? true: false;
        }
    /* 连接Xlsx类型Excel*/
    public void ConnectExcel(string path)
        {
         string connectString = $"Provider = Microsoft.ACE.OLEDB.12.0; Data Source ={path};Extended Properties =\"Excel 12.0;HDR=yes;IMEX=2;\"";
         con = new OleDbConnection(connectString);
         con.Open();
         var result = con.State;
         this.ConnectStatus = con.State == System.Data.ConnectionState.Open ? true: false;
        }
  • 从Excel中读取数据:

public void SearchDate()
{
   string code = "Select * from [Sheet1$]";
   OleDbDataAdapter adapter = new OleDbDataAdapter(code, con);
   System.Data.DataSet dataSet = new System.Data.DataSet();
   adapter.Fill(dataSet);
   System.Data.DataTable table = new System.Data.DataTable();
   table= dataSet.Tables[0];
   for (int i = 0; i < table.Rows.Count; i++)
    {
      Console.WriteLine("行号:"+i+table.Rows[i][0]);
     }
   adapter.Dispose();
}
  • 向Excel中写入数据:
  • public void InsetData()
    {
    string code = "Insert into [Sheet1$] (name,age,Grade) values (12,33,33)";
    OleDbCommand cmd = new OleDbCommand(code, con);
    cmd.ExecuteNonQuery();
                
    }

  • 新建表格
public void CreateSheet()
 {
  string code = "create table  Texttable ([ID] varchar,[name] varchar,[age] integer)";
  OleDbCommand cmd = new OleDbCommand(code, con);
  var dd= cmd.ExecuteNonQuery();

}

源代码:

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

工控匠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值