zoukankan      html  css  js  c++  java
  • asp.net 将Excel中某个工作簿的数据导入到DataTable方法

           最近在网上看了几篇将Excel中某个工作簿的数据导入到DataTable的文章,自己总结了一套最实用的方法。

           这里需要注意的是:从Excel的导入到DataTable时,Excel的第一行数据会导入成DataTable的字段,所以

           Excel的第一行最好可以为空或者标识数据。

           添加引用:

           using System.Data.OleDb;

           using System.IO;

           调用如下:

           DataTable dt = GetExcelData("D:\\Data.xls", "sheet1");

           方法如下:

            /// <summary>
            /// 获取指定路径、指定工作簿名称的Excel数据
            /// </summary>
            /// <param name="FilePath">文件存储路径</param>
            /// <param name="WorkSheetName">工作簿名称</param>
            /// <returns>如果争取找到了数据会返回一个完整的Table,否则返回异常</returns>
            public DataTable GetExcelData(string FilePath, string WorkSheetName)
            {
                DataTable dtExcel = new DataTable();
                OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath));
                OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [" + WorkSheetName + "$]", con);
                //读取
                con.Open();
                adapter.FillSchema(dtExcel, SchemaType.Mapped);
                adapter.Fill(dtExcel);
                con.Close();
                dtExcel.TableName = WorkSheetName;
                //返回
                return dtExcel;
            }

            /// <summary>
            /// 获取链接字符串
            /// </summary>
            /// <param name="strFilePath"></param>
            /// <returns></returns>
            public string GetExcelConnection(string strFilePath)
            {
                if (!File.Exists(strFilePath))
                {
                    throw new Exception("指定的Excel文件不存在!");
                }
                return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";Extended properties=\"Excel 8.0;Imex=1;HDR=Yes;\"";
                //@"Provider=Microsoft.Jet.OLEDB.4.0;" +
                //@"Data Source=" + strFilePath + ";" +
                //@"Extended Properties=" + Convert.ToChar(34).ToString() +
                //@"Excel 8.0;" + "Imex=1;HDR=Yes;" + Convert.ToChar(34).ToString();
            }

  • 相关阅读:
    F2. Same Sum Blocks (Hard) 解析(思維、前綴和、貪心)
    E. Copying Data 解析(線段樹)
    B. Nauuo and Circle 解析(思維、DP)
    POJ3436-ACM Computer Factory(最大流)
    A.牛牛扔牌(双端队列)/B.疯狂过山车(最长上升子序列)/C.牛牛的棋盘(容斥原理)
    CodeForces 665E. Beautiful Subarrays(字典树)(贪心)(异或前缀和)
    CodeForces 455C.Civilization(并查集)(树的直径)
    CodeForces 1021B. Chemical table(并查集)
    CodeForces 961E. Tufurama(主席树)
    CodeForces 1024C. Array Product(模拟)(分类讨论)
  • 原文地址:https://www.cnblogs.com/gaopin/p/2639743.html
Copyright © 2011-2022 走看看