private static string[] GetExcelSheetNames(OleDbConnection conn)
        {
            DataTable dtbSheets = null;
            String[] arrExcelSheets = null;
            using (conn)
            {
                try
                {
                    conn.Open();

// Get the data table containing the schema
                    dtbSheets = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

if (dtbSheets == null)
                    {
                        return null;
                    }

arrExcelSheets = new String[dtbSheets.Rows.Count];
                    int intI = 0;

// Add the sheet name to the string array.
                    foreach (DataRow dr in dtbSheets.Rows)
                    {
                        arrExcelSheets[intI] = dr["TABLE_NAME"].ToString();
                        intI++;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    // Close the connection
                    conn.Close();
                }
                return arrExcelSheets;
            }
        }

private static DataTable GetDataTableFromXls(OleDbConnection conn, string spreadSheetName)
        {
            DataTable datTemp = null;

using (conn)
            {
                try
                {
                    string strComand = "select * from [" + spreadSheetName + "]";

conn.Open();
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strComand, conn);
                    datTemp = new DataTable(spreadSheetName);
                    adapter.Fill(datTemp);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    // Close the connection
                    conn.Close();
                }
            }
            return datTemp;
        }
        // Get the spreadsheet that contain data
        public static DataTable GetDataTableWithData(string serverLocation)
        {
            OleDbConnection xlsConn = null;
            DataTable datXls = null;

try
            {
                string strConnStr = null;
                // Connection string for Excel
                strConnStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + serverLocation + ";Extended Properties=\"Excel 8.0; HDR=NO; IMEX=1\"";
                xlsConn = new OleDbConnection(strConnStr);
                // Get Sheet names from an Excel Book
                string[] arrXls = GetExcelSheetNames(xlsConn);

try
                {
                    foreach (string strSheet in arrXls)
                    {
                        xlsConn = new OleDbConnection(strConnStr);
                        datXls = GetDataTableFromXls(xlsConn, strSheet);
                        if (datXls != null && datXls.Rows.Count > 0)
                        {
                            break;
                        }
                    }
                }
                catch// (SqlException se)
                {
                    //throw new Exception(se.Message);
                }

return datXls;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                if (xlsConn.State == ConnectionState.Open)
                {
                    xlsConn.Close();
                }
                xlsConn.Dispose();
            }
        }

原文转载:http://www.cnblogs.com/moss_tan_jun/archive/2010/08/06/1793747.html

读取Excel文件到DataTable中的更多相关文章

  1. 读取excel 文件到datatable

    上一篇文章介绍了将datatable 内容导出到excel 文件,这里介绍如何将一个excel 文件读取出来,并保持到datatable 中,实际这样的应用场景也是经常遇到的. 这里继续使用了Micr ...

  2. C#读取excel数据到datatable中

    DataTable dtGBPatient = new DataTable(); string strConn;string excelName; //注意:把一个excel文件看做一个数据库,一个s ...

  3. 【C#】采用OleDB读取Excel文件转DataTable

    using System; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using ...

  4. 读取Excel文件的两种方法

    第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(stri ...

  5. 如何在C#中打开和读取EXCEL文件

    这篇文章向您展示如何在C#Windows Forms Application中使用ExcelDataReader,ExcelDataReader.DataSet打开和读取Excel文件.创建一个新的W ...

  6. 读取Excel文件中的单元格的内容和颜色

    怎样读取Excel文件中的单元格的内容和颜色 先创建一个Excel文件,在A1和A2中随意输入内容,设置A1的字体颜色为红色,A2的背景为黄色.需要 using Excel = Microsoft.O ...

  7. 用python的pandas读取excel文件中的数据

    一.读取Excel文件   使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...

  8. C# 读取EXCEL文件的三种经典方法

    1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...

  9. .Net读取Excel文件时丢失数据的问题 (转载)

    相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...

随机推荐

  1. WindowsForms获取服务名称

    StringBuilder sb = new StringBuilder(); ServiceController[] services = ServiceController.GetServices ...

  2. CAD设置背景图片

    把图片作为背景图片可见但是不能编辑操作. 主要用到函数说明: _DMxDrawX::DrawImageToBackground 绘光栅图到背景.详细说明如下: 参数 说明 BSTR sFileName ...

  3. RabbitMQ系列(二)--基础组件

    声明:对于RabbitMQ的学习基于某课网相关视频和<RabbitMQ实战指南>一书,后续关于RabbitMQ的博客都是基于二者 一.什么是RabbitMQ RabbitMQ是开源代理和队 ...

  4. jmeter录制火狐浏览器

    昨天看youtube,居然发现有这功能,啊哈哈 听不懂英语 也能有收获. 一.Jmeter 文件中选择Templates->Recording 二.创建之后,自动出现一个模板: 1. Threa ...

  5. LINUX-APT 软件工具 (Debian, Ubuntu 以及类似系统)

    apt-get install package_name 安装/更新一个 deb 包 apt-cdrom install package_name 从光盘安装/更新一个 deb 包 apt-get u ...

  6. [bzoj2141][排队] (分块大法好)

    Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的 ...

  7. 【Codeforces 375B】Maximum Submatrix 2

    [链接] 我是链接,点我呀:) [题意] 如果任意行之间可以重新排序. 问你最大的全是1的子矩阵中1的个数 [题解] 设cnt[i][j] 表示(i,j)这个点往右连续的1的个数 我们枚举列j 然后对 ...

  8. [luoguP2760] 科技庄园(背包DP)

    传送门 每次拿完还得回去... 数据中有两个需要注意的地方: 存在桃树上有桃子但是摘 0 次的情况 题目中要求体力不能为0,因此就算到达了重点体力也不能为0,所以实际上允许使用的体力为 a - 1 把 ...

  9. hdu poj KMP简单题目总结

    hdu 3336 题意:输入一个字符串求每个前缀在串中出现的次数和 sol:只要稍微理解下next 数组的含义就知道只要把每个有意义的next值得个数加起来即可 PS:网上有dp解法orz,dp[i] ...

  10. 一文教你用 Neo4j 快速构建明星关系图谱

    更多有趣项目及代码见于:DesertsX/gulius-projects 前言 本文将带你用 neo4j 快速实现一个明星关系图谱,因为拖延的缘故,正好赶上又一年的4月1日,于是将文中的几个例子顺势改 ...