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();
            }

  • 相关阅读:
    Concurrent
    Java多线程状态切换
    Java中volatile如何保证long和double的原子性操作
    协程与线程
    线程饥饿
    线程活锁
    线程死锁
    Java Thread之start和run方法的区别
    ThreadLocal内存泄漏
    interrupt和interrupted和isInterrupted的区别
  • 原文地址:https://www.cnblogs.com/gaopin/p/2639743.html
Copyright © 2011-2022 走看看