在数据处理的时候,我们会Excel(包含2003、2007、2010等)转换成DataTable,以便进一步操作

1、怎么访问Excel文件呢?我们可以通过OLEDB接口访问,如下:

  1. private string GetConStr(string ExcelPath)
  2. {
  3. string path = ExcelPath;
  4. if (!File.Exists(path))
  5. return null;
    string str2 = Path.GetExtension(path).ToLower();
  6. if ((str2 != ".xls") && (str2 != ".xlsx"))
  7. return null;
    string str3 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + path + "; Extended Properties=Excel 8.0";
  8. if (str2 == ".xlsx")
  9. str3 = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source=" + path + "; Extended Properties=Excel 12.0";
  10. return str3;
  11. }

2、读取Excel的数据到DataTable

  1. public DataTable ExcelToDataTable(string ExcelPath)
  2. {
  3. return ExcelToDataTable(ExcelPath, null);
  4. }
  5.  
  6. public DataTable ExcelToDataTable(string ExcelPath, string SheetName)
  7. {
  8. string conStr = GetConStr(ExcelPath);
  9. if (string.IsNullOrEmpty(conStr))
  10. return null;
    OleDbConnection connection = new OleDbConnection(conStr);
  11. connection.Open();
  12. if (string.IsNullOrEmpty(SheetName))
  13. SheetName = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[]["TABLE_NAME"].ToString();
    else if (!SheetName.Contains("$"))
  14. SheetName = SheetName + "$";
    OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [" + SheetName + "]", conStr);
  15. DataSet dataSet = new DataSet();
  16. adapter.Fill(dataSet, "[" + SheetName + "$]");
  17. connection.Close();
  18. return dataSet.Tables[];
  19. }

把Excel转换成DataTable,Excel2003+的更多相关文章

  1. 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel

    步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...

  2. C#_List转换成DataTable

    /// <summary> /// 讲list集合转换成datatable /// </summary> /// <param name="list" ...

  3. 将List转换成DataTable

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  4. list转换成DataTable

    list转换成DataTable类如下: public static DataTable ToDataTable<T>(this IList<T> datas) { DataT ...

  5. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  6. C# DataTable转换成实体列表 与 实体列表转换成DataTable

    /// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...

  7. 获取报告 Stream转string,利用字符串分割转换成DataTable

    protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = new MemoryStream(); ...

  8. C#:CsvReader读取.CSV文件并转换成DataTable

    原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...

  9. 将泛类型集合List类转换成DataTable

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

随机推荐

  1. 【Git123】Git

    https://www.cnblogs.com/jager/p/6684637.html 四.git工作原理 这边文章介绍的不错 Git from the Bottom Up 六.git常用命令 wo ...

  2. 理解C#的Lock语法意义

    一. 为什么要lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当 ...

  3. OpenCV——基本图形绘制(椭圆、圆、多边形、直线、矩形)

    //绘制椭圆 void DrawEllipse(Mat img, double angle) { ; ; ellipse(img, Point(WINDOW_WIDTH / , WINDOW_WIDT ...

  4. Python2.7-marshal

    marshal模块,和 pickle 模块功能基本相同,也是序列化数据,只不过 marshal 都序列化成二进制数据,由于没有官方统一,不同版本 marshal 的结果也会不一样,所以不推荐使用.ma ...

  5. CentOS7服务器添加新用户

    添加新用户[root@localhost etc]# adduser jiangshan[root@localhost etc]# passwd jiangshan[root@localhost et ...

  6. scapy学习笔记(5)

    1.ACK Scan >>>ans,unans=sr(IP(dst=,],flags="A") 扫描后,若要找出未过虑的端口: for s,r in ans: i ...

  7. loadrunner中pacing的设置

    通常我们在谈到一个软件的“性能”的时候,首先想到的就是“响应时间”和“并发用户数”这两个概念.我们看到的性能需求经常都是这样定义的: “要求系统支持 100 个并发用户” 看到这样的性能需求,我们往往 ...

  8. stm32_DMA采集一个AD数据_并通过DMA向串口发送

    这是以前学32的时候写的,那时候学了32之后感觉32真是太强大了,比51强的没影.关于dma网上有许多的资料,关于dma采集ad网上也有很多.亲们搜搜,这里只贴代码了,其实我也想详详细细地叙述一番,但 ...

  9. 【本地服务器】windows下nginx安装操作教程

    1.下载nginx 下载地址:    (可选择下载 Stable version 版本) 2.把安装放到C盘或其他盘的根目录,并解压文件压缩包,可以重命名解压的文件夹,方便找到路径 (注意不要直接双击 ...

  10. cleanCode[1]:有意义的命名

    为什么要有意义的命名: 我们都曾经说过有朝一日再回头清理那些糟糕的代码,然而最终总是弃之不顾.稍后等于永不,我们需要立即行动,写优雅的代码. 写代码的过程中,读占的比例很大,所以首先要让代码易读. 有 ...