//获excel中多个sheet中的数据/// <summary>/// 读取导入Excel文件内容/// </summary>/// <param name="fileName">文件路径(上传后)</param>/// <param name="columnString">Excel中的列 名</param>/// <param name="isReadAllExcelSheet">是否读取多个Sheet</param>/// <param name="message">(out)消息提示</param>/// <returns></returns>public DataTable ReadDataFromExcel(string fileName, string columnString, bool isReadAllExcelSheet, out string message){message = "";try{string strCon = "";string fileExt = Path.GetExtension(fileName).ToLower();if (fileExt == ".xls"){strCon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;}else if (fileExt == ".xlsx"){strCon = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;}else{message = "读取失败,非excel文件格式。";return null;}OleDbConnection excelConnection = new OleDbConnection(strCon);excelConnection.Open();#region 获取所有sheet表名称DataTable excelData = new DataTable();DataTable getTableNameData = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获取excel中的第一个sheet中的数据//ReadEachExcelSheetData(excelConnection, ((String)getTableNameData.Rows[0]["TABLE_NAME"]).ToString(), columnString, ref excelData);//获取excel中有多个sheet中的数据foreach (DataRow row in getTableNameData.Rows){excelData = ReadEachExcelSheetData2(excelConnection, ((String)row["TABLE_NAME"]).ToString(), columnString);if (excelData.Rows.Count <= 0){break;}}getTableNameData = null;#endregionreturn excelData;}catch (Exception ex){message = "数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!";return null;}}public void ReadEachExcelSheetData(OleDbConnection excelConnection, string tableName, string columnString, ref DataTable excelData){try{tableName = "[" + tableName + "]";string sql = "";string queryFieldText = string.Empty;if (string.IsNullOrEmpty(queryFieldText)){queryFieldText = "*";}else{foreach (string column in columnString.Split(',')){queryFieldText += "[" + column + "],";}queryFieldText = queryFieldText.Trim(',');}sql = @"SELECT {0}FROM {1}";sql = string.Format(sql, queryFieldText, tableName);DataSet ds = new DataSet();OleDbDataAdapter myAdp = new OleDbDataAdapter(sql, excelConnection);myAdp.Fill(ds, tableName);if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0){excelData.Merge(ds.Tables[0]);}}catch (Exception ex){throw ex;}}//获取excel中第一个sheet中的数据/// <summary>/// 读取导入Excel文件内容/// </summary>/// <param name="fileName">文件路径(上传后)</param>/// <param name="columnString">Excel中的列 名</param>/// <param name="isReadAllExcelSheet">是否读取多个Sheet</param>/// <param name="message">(out)消息提示</param>/// <returns></returns>public DataTable ReadDataFromExcel(string fileName, string columnString, bool isReadAllExcelSheet, out string message){message = "";try{string strCon = "";string fileExt = Path.GetExtension(fileName).ToLower();if (fileExt == ".xls"){strCon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;}else if (fileExt == ".xlsx"){strCon = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + fileName + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;}else{message = "读取失败,非excel文件格式。";return null;}OleDbConnection excelConnection = new OleDbConnection(strCon);excelConnection.Open();#region 获取所有sheet表名称DataTable excelData = new DataTable();DataTable getTableNameData = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获取excel中的第一个sheet中的数据ReadEachExcelSheetData(excelConnection, ((String)getTableNameData.Rows[0]["TABLE_NAME"]).ToString(), columnString, ref excelData);//获取excel中有多个sheet中的数据//foreach (DataRow row in getTableNameData.Rows)//{//    excelData = ReadEachExcelSheetData2(excelConnection, ((String)row["TABLE_NAME"]).ToString(), columnString);//    if (excelData.Rows.Count <= 0)//    {//        break;//    }//}getTableNameData = null;#endregionreturn excelData;}catch (Exception ex){message = "数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!";return null;}}public DataTable ReadEachExcelSheetData2(OleDbConnection excelConnection, string tableName, string columnString){DataTable excelData = new DataTable();try{tableName = "[" + tableName + "]";string sql = "";string queryFieldText = string.Empty;if (string.IsNullOrEmpty(queryFieldText)){queryFieldText = "*";}else{foreach (string column in columnString.Split(',')){queryFieldText += "[" + column + "],";}queryFieldText = queryFieldText.Trim(',');}sql = @"SELECT {0}FROM {1}";sql = string.Format(sql, queryFieldText, tableName);DataSet ds = new DataSet();OleDbDataAdapter myAdp = new OleDbDataAdapter(sql, excelConnection);myAdp.Fill(ds, tableName);if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0){excelData.Merge(ds.Tables[0]);}}catch (Exception ex){throw ex;}return excelData;}

C# 读取Excel和DBF文件相关推荐

  1. Java读取Level-1行情dbf文件极致优化(2)

    最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1 ...

  2. C语言调用dbf文件,C语言直接读取FOXBASE的DBF文件.pdf

    C语言直接读取FOXBASE的DBF文件 维普资讯 1◇-l 1(Bs I 据 的读取 . 一 . 问题的提出 表 1 DBF文件的文件参数表 FOXBAsE有时在与外界进行数据交换 .提高数据 位置 ...

  3. python读excel 包含格式_python读取excel格式的文件

    使用 xlrd 能够很方便的读取 excel 文件内容,而且这是个跨平台的库,能够在windows,linux/unix,等平台上面使用. 简单例子importxlrd fname = "s ...

  4. 05pandas读取excel csv txt文件

    pandas丨数据读取与保存 读取excel文件: pandas.read_excel() 保存excel文件: pandas.to_excel() pandas.read_excel(io, she ...

  5. C# 读取Excel CSV 类型文件到DataSet中,反之从DataSet写入excel

    /// <summary> /// 设置文件保存位置, /// </summary> /// <returns>返回文件路径</returns> pri ...

  6. POI读取Excel转为HTML文件

    简介 使用poi3.15进行Excel读取,比较老旧了,历史项目遗留问题,不过本文只是记录本次优化的一些思路. 程序会使用通用css.生成css.生成HTML文件完成Excel预览的预览功能 程序不会 ...

  7. Python编程之读取Excel csv格式文件内容

    1.读取csv文件,返回list数据结构 注意:csv文件中不应该出现合并行的数据,否则读取为空值 test.csv文件为:可以自己定义 2.程序部分 import sys import csv de ...

  8. js读取excel导出json文件

    1.依赖包xlsx npm install node-xlsx 2.代码 const XLSX = require('xlsx') const fs = require('fs')const dest ...

  9. c语言读dbf文件格式,C语言直接读取FOXBASE的DBF文件

    维普资讯 http://doc.docsou.com 1◇~ l 1 ( B s I 据的读取. 一 . 问题的提出 位置 1 表 1 D B F文件的文件参数表长度( B ) 1 船 H F OX ...

最新文章

  1. Android开发实践:以“专业”的态度处理多线程
  2. 什么是生成模型和GAN?一文体验计算机视觉的魔力
  3. Web 趋势榜: 上周不可错过的最热门的 10 大 Web 项目 - 又增加了那么多的好项目啊 - 210611...
  4. gui窗口遮挡算法_软件更新丨AWTK 1.2 发布,国产开源 GUI 引擎
  5. php5中Xdebug配置安装步骤介绍
  6. PHP封装的curl请求:有报错信息的 get post
  7. 一天干掉一只Monkey计划(二)——热流扰动,径向模糊
  8. css中hack是什么
  9. 计算机二级vfp考试怎么学,计算机二级VFP考试基础教程(7)
  10. 节约里程法解决VRP物流配送路径优化问题及局部优化改进-matlab代码
  11. [转帖]国产操作系统概念及历史,目前国产操作系统有哪些?
  12. mysql 中文社区版_mysql数据库下载官网_mysql中文官方网站下载
  13. mingw 使用 HPSocket 进阶版
  14. !!股票大作手操盘术【图解】
  15. 解决WARNING: Ignoring invalid distribution -pencv-python (c:\users\lhw\anaconda3\lib\site-packages)
  16. 华为拍摄月亮专利公布: 多次曝光获取月亮清晰轮廓
  17. win10系统更新服务器太慢了,Win10系统更新安装慢如何解决
  18. WINVER 和 _WIN32_WINNT
  19. 计算机考试word功能,2018年计算机二级MS Office考试内容:Word的功能和使用
  20. POJ 3693 Maximum repetition substring (后缀数组)

热门文章

  1. 金融计算机的amort,CFA考点解析:如何用计算器Amort键计算interest rate
  2. mybatis的MBG自动生成代码详细讲解
  3. 如何使用VCS和verdi跑通《UVM实战》上的例子
  4. 百度小程序服务器出错,百度智能小程序错误码解读
  5. 文件上传时,文件太大会有几种被限制的情况
  6. ms、s、min、h时间单位换算
  7. 一个汉字几个字符?几个字节?字符与字节关系傻傻分不清
  8. Redis源码阅读01-读了一下redis启动流程涉及的源码我都读了个啥
  9. 电脑游戏的上帝:约翰·卡马克和id
  10. Android 原生控件ViewFlipper实现淘宝头条垂直滚动广告条