C#读取excel文件

C#读取excel文件

读取的是本地的excel文件,读取过程中遇到的问题是外部表不是预期格式的错误如片如下
读取表格错误
造成这个错误的原因是因为表格是新版本,然而读取的驱动是老版本导致的,换成新的就好了,下面我把这两种都放上面了,需要的自取


        static DataSet ExcelToDS(string Path)
        {
            //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
            //2003(Microsoft.Jet.Oledb.4.0)
            //string strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", Path);

            //2010(Microsoft.ACE.OLEDB.12.0)
            string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", Path);
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            DataSet ds = null;
            strExcel = "select * from [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            ds = new DataSet();
            myCommand.Fill(ds, "table1");
            return ds;
        }

简单的测试一下方法能不能用,由于方法返回的数据类型是DataSet类型,遍历就行了,可以根据自己需要取某些列的数据。

public static List<sal_chance> ConvertExcelToSalChance(string filepath) {
            List<sal_chance> salChanceList = new List<sal_chance>();
            sal_chance sal_chance = new sal_chance();
            DataSet ds = ExcelToDS(filepath);
            foreach (DataTable dt in ds.Tables)   //遍历所有的datatable
            {
                foreach (DataRow dr in dt.Rows)
                {
                    object[] arr = dr.ItemArray;
                    for (int i = 0; i < arr.Length; i++)
                    {
                        switch (i)
                        {
                            case 1:
                               sal_chance.chc_source=arr[i].ToString();
                                break;
                            case 2:
                                sal_chance.chc_cust_name = arr[i].ToString();
                                break;
                            case 3:
                                sal_chance.chc_rate = Convert.ToInt32(arr[i]);
                                break;
                            case 4:
                                sal_chance.chc_linkman = arr[i].ToString();
                                break;
                            case 5: sal_chance.chc_title = arr[i].ToString();
                                break;
                            case 6: sal_chance.chc_tel = arr[i].ToString();
                                break;
                            case 7: sal_chance.chc_desc = arr[i].ToString();
                                break;
                            default:
                                break;
                        }
                    }
                    salChanceList.Add(sal_chance);
                }
            }
            return salChanceList;
        }

成功读取到excel里面的数据。
读取到数据

posted @   feisir  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示