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里面的数据。
读取到数据

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FeiSir_PC

您的三联和鼓励是我创作的最大动

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

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

打赏作者

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

抵扣说明:

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

余额充值