c#用OleDb读写excel

时间:2022-05-19 11:38:40
  string _strCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Book1.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
                OleDbConnection _con = new OleDbConnection(_strCon);//@"E:\Book1.xls"
                _con.Open();
                string _strSelectCMD = "select * from [Sheet1$]";
                OleDbDataAdapter _adapter = new OleDbDataAdapter(_strSelectCMD,_con);
                DataSet _set = new DataSet();
                _adapter.Fill(_set, "Sheet1");
                DataTable _table = _set.Tables[0];
                for (int i = 0; i < _table.Rows.Count; i++)
                {
                    string _str1 = _table.Rows[i][0].ToString();
                    string _str2 = _table.Rows[i][1].ToString();
                    string _str3 = _table.Rows[i][2].ToString();
                }

                _con.Close();

====================================================================================

 //获取文件扩展名
        string strExtension = System.IO.Path.GetExtension(strExcelPath);
        string strFileName = System.IO.Path.GetFileName(strExcelPath);

 switch (strExtension)
        {
            case ".xls":
                objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\"");
           break;
            case ".xlsx":
                objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\"");
                break;
            default:
                objConn = null;
               break;
 

下面说明一下连接字符串

        HDR=Yes,这代表第一行是标题,不做为数据使用(但是我在实际使用中,如果第一行存在复杂数值,那么读取得到的Datatable列标题会自动设置为F1、F2等方式命名,与实际应用不符,所以当时是通过HDR=No方式将所有内容读取到Datatable中,然后手动将第一行设置成标题的);IMEX ( IMport EXport mode )设置 
IMEX 有三种模式: 
0 is Export mode 
1 is Import mode 
2 is Linked mode (full update capabilities) 
我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为: 
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。 
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。 
当 IMEX=2 时为“链接模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。

---------------------------------

另外,读取Excel2007版本的文件时,版本应该从8.0改为12.0,同时驱动不能再用Jet,而应该用ACE。负责会造成“找不到可安装的 ISAM”的错误。


======================================================================

OleDb

说明:使用Microsoft Jet 提供程序用于连接到 Excel 工作簿,将Excel文件作为数据源来读写
优点:简单快速,能够操作高版本Excel
缺点:只能够进行有限的操作(读、写)

今天学习使用OleDb操作Excel文件

连接字符串:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'
provider:表示提供程序名称
Data Source:这里填写Excel文件的路径
Extended Properties:设置Excel的特殊属性
Extended Properties 取值:
Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97。
HDR=Yes 表示第一行包含列名,在计算行数时就不包含第一行
IMEX 0:导入模式,1:导出模式:2混合模式

1.读取excel文件

c#用OleDb读写excel

2.获取工作簿中所有的工作表

c#用OleDb读写excel

3.写入数据到Excel表

c#用OleDb读写excel

4.创建Excel文件并写入数据

c#用OleDb读写excel


http://www.jb51.net/article/65377.htm

=============================================