读取Excel数据到DataTable

代码

/// <summary>

/// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据

/// </summary>

/// <param name="FilePath">文件存储路径</param>

/// <param name="WorkSheetName">工作簿名称</param>

/// <returns>如果争取找到了数据会返回一个完整的Table,否则返回异常</returns>    public DataTable GetExcelData(string astrFileName)

{        string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString();

return GetExcelData(astrFileName, strSheetName);

}

代码

/// <summary>

/// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空

/// </summary>

/// <param name="strFilePath">要获取的Excel</param>

/// <returns>如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空</returns>

public ArrayList GetExcelWorkSheets(string strFilePath)

{

ArrayList alTables = new ArrayList();

OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath));

odn.Open();

DataTable dt = new DataTable();

dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

if (dt == null)

{

throw new Exception("无法获取指定Excel的架构。");

}

foreach (DataRow dr in dt.Rows)

{

string tempName = dr["Table_Name"].ToString();

int iDolarIndex = tempName.IndexOf('$');

if (iDolarIndex > 0)

{

tempName = tempName.Substring(0, iDolarIndex);

}

//修正了Excel2003中某些工作薄名称为汉字的表无法正确识别的BUG。            if (tempName[0] == '\'')

{

if (tempName[tempName.Length - 1] == '\'')

{

tempName = tempName.Substring(1, tempName.Length - 2);

}

Else

{

tempName = tempName.Substring(1, tempName.Length - 1);

}

}

if (!alTables.Contains(tempName))

{                alTables.Add(tempName);

}

}

odn.Close();

if (alTables.Count == 0)

{

return null;

}

return alTables;

}

代码

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

读取Excel数据到DataTable的更多相关文章

  1. 使用NPOI读取Excel数据到DataTable

    如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...

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

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

  3. Aspose.Cells 读取Excel数据到DataTable

    C#代码: Workbook workbook = new Workbook(); workbook.Open(excelfile); Cells cells = workbook.Worksheet ...

  4. Openxml入门---Openxm读取Excel数据

    Openxml读取Excel数据: 有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.F ...

  5. C# 读取EXCEL数据

       /// <summary> /// 读取EXCEL数据 /// </summary> /// <param name="Path">< ...

  6. c#读取Excel数据到Gridview

    #region 读取Excel数据到Gridview public void ReadExcel(string sExcelFile, GridView dgBom)    { DataTable E ...

  7. C#读取Excel数据操作大全

    苦丁茶 发表于 2014-02-10 12:58:00 | 分类标签: ASP.NET 读取Excel 本文介绍下,用C#读取excel数据的例子,包括读取整个工作薄的数据.读取工作薄选定区域中的数据 ...

  8. 猜想-未做 利用office组件读取excel数据

    ---未实际使用过 用SQL-Server访问Office的Access和Excel http://blog.sina.com.cn/s/blog_964237ea0101532x.html 2007 ...

  9. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

随机推荐

  1. 将linux的root用户的家目录由/root切换为/home/root

    步骤1,先以root登录,然后创建目录/home/root步骤2,vi /etc/passwd里root用户的家目录为/home/root:步骤3,cp -rf /root/ /home/将原来的ro ...

  2. tp5功能模块添加与调试

    在原先完善的功能基础上添加比如导出列表为excel ,一下子把所有属性写全了,出了问题,不好查找问题在哪? 所以遇到这种问题,需要最简单的测试.比如新建一个mysql表内就放一列一行数据.减少代码量, ...

  3. PB数据窗口分页

    第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/500)  --这里500还可以用全局函数取代,这样可以允许用户任意设置每页多少 ...

  4. Git和Github的介绍、简单操作、冲突(上)

    目的:   1.git与github简介  2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe   5.Git常用命令 5.1Git命令使用场景 5. ...

  5. spring整合MQ

    ---恢复内容开始--- 一. 导入依赖 <dependencies> <!-- ActiveMQ客户端完整jar包依赖 --> <dependency> < ...

  6. fatfs系统的移植

    integer.h   FATFS的数据类型定义(一般不需要更改,其他的文件都需要引用这个文件的内容) ffcon.h FATFS的配置文件,配置项的各个参数都需要在这里修改 一个细致的讲解fatfs ...

  7. jvm--工具

    jps (java process status) == ps / top 作用:显示所有运行中的java进程. jstat 作用:查看类装载,内存,垃圾收集,jit编译的信息. jinfo 作用:实 ...

  8. io.ByteIO和open操作二进制流的区别(转)

    转自Stack Overflow:https://stackoverflow.com/questions/42800250/difference-between-open-and-io-bytesio ...

  9. .net通过网络路径下载文件至本地

    获取网络文件,通过流保存文件,由于上一版存在数据丢失情况,稍微调整了以下. //网络路径文件 string pathUrl = "http://localhost:805/春风吹.mp3&q ...

  10. 转 winfrom组件圆角

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...