C#获取Excel文件每一行/列数据(对.xls、xlsx文件有效)

        /// <summary>
        /// 读取excel文件内容,只能读取xls和xslx类型的文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="fileName"></param>
        public void GetExcelData(string filePath)
        {
            try
            {
                string fileType = ".xls";//获取文件的后缀
                string connectinString = string.Format("Provider=Microsoft.ACE.OLEDB.{0}.0;Persist Security Info=False;" +
                                        "Extended Properties=\"Excel {1}.0;HDR={2};IMEX=1;\";" +
                                        "data source={3};", (fileType == ".xls" ? 4 : 12), (fileType == ".xls" ? 8 : 12), (true ? "Yes" : "NO"), filePath);

                //建立 链接  创建到数据源的对象
                OleDbConnection connection = new OleDbConnection(connectinString);
                //打开链接
                connection.Open();

                //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 
                DataTable dtSheetName = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                //包含excel中表名的字符串数组
                string[] strTableNames = new string[dtSheetName.Rows.Count];
                for (int k = 0; k < dtSheetName.Rows.Count; k++)
                {
                    strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                }

                //string sql = $"select * from [{sheet}$]"; //sql 语法  是一个查询命令,该句报错,修改成如下
                string sql = "select * from [" + strTableNames[0] + "]";

                OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);

                DataSet dataSet = new DataSet();//用来放数据 用来存放DataTable
                adapter.Fill(dataSet);//表示把查询 结果datatable 放到(填充)dataset 里面
                connection.Close();//释放链接资源  

                //取得数据
                DataTableCollection tableCollection = dataSet.Tables; //获取当前集合中所有 表格
                DataTable table = tableCollection[0];//因为只往dataset里面放置 了一张表格 ,所有这里取得索引为0的表格就是我们刚刚查询到的表格
                //取得表格中的数据
                //取得table中所有的行
                DataRowCollection dataTableRow = table.Rows;//返回了一个行的集合
                
                //遍历行的集合,取得每一个行的datarow对象
                foreach (DataRow row in dataTableRow)//遍历行
                {
                    foreach (var item in row.ItemArray)//遍历行的所有列
                    {
                        
                    }
                }

                

            }
            catch (Exception ex)
            {
                Log.WriteLog(LogFile.Error, "读取Excel内容出错!\r\n" + ex);//自定义的日志输出
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值