#region 读取Excel中的数据
/// <summary>
/// 读取Excel中的数据
/// </summary>
/// <param name="excelFile">Excel文件名称及路径,EG:C:\Users\JK\Desktop\导入測试.xls</param>
/// <returns>Excel中的数据</returns>
private DataTable GetTable(string fileName)
{
OleDbConnection objConn = null;
System.Data.DataTable dt = null;
string connString = string.Empty;
OleDbDataAdapter da = new OleDbDataAdapter();
//获取Excel工作薄中Sheet页(工作表)名集合
String[] ss = this.GetExcelSheetNames(fileName);
DataTable dataTable = new DataTable();
try
{
string FileType = fileName.Substring(fileName.LastIndexOf("."));
if (FileType == ".xls")
connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + fileName + ";Extended Properties=Excel 8.0;";
else//.xlsx
connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
// 创建连接对象
objConn = new OleDbConnection(connString);
// 打开数据库连接
objConn.Open(); string sql_F = "Select * FROM [{0}]";
for (int i = 0; i < ss.Length;i++ )
{
da.SelectCommand = new OleDbCommand(String.Format(sql_F, ss[i].ToString() + "$"), objConn);
da.Fill(dataTable);
MessageBox.Show("第"+i+"次表中数据量="+dataTable.Rows.Count.ToString());
}
dataTable = DeleteBlank(dataTable,9);
MessageBox.Show("删除空行后,表中数据量=" + dataTable.Rows.Count.ToString());
return dataTable;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return null;
}
finally
{
// 清理
if (objConn != null)
{
objConn.Close();
objConn.Dispose();
}
if (dt != null)
{
dt.Dispose();
}
}
} #endregion
         #region  删除指定表中的空白行
/// <summary>
///删除指定表中的空白行
/// </summary>
/// <param name="dt">表名</param>
/// <param name="ColNum">Excel中的列数</param>
/// <returns>删除空白行后的DataTable</returns>
private DataTable DeleteBlank(DataTable dt,int ColNum)
{
if (dt == null || dt.Rows.Count==0)
{
return dt;
}
//删除当中的空行(注意for循环的形式)
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
DataRow row = dt.Rows[i];
bool flag = true;
//当某行的ColNum列,均为空时,改行为空
for (int j = 0; j < ColNum; j++)
{
object o = row[j];
if (o != DBNull.Value && Convert.ToString(o).Trim().Length > 0)
{
flag = false;
break;
}
}
if (flag)
{
dt.Rows[i].Delete();
}
}
dt.AcceptChanges();
//把行中DBNull列替换成空字符串
for (int k = dt.Rows.Count - 1; k >= 0; k--)
{
DataRow row = dt.Rows[k];
for (int z = 0; z < ColNum; z++)
{
object o = row[z];
if (o == DBNull.Value)
{
if (dt.Columns[z].DataType == typeof(string))
{
row[z] = "";
}
}
}
}
dt.AcceptChanges();
return dt;
}
#endregion

小注:

读取Excel的时候。会自己主动处理表头。

C# 读取Excel中的数据的更多相关文章

  1. sql 读取excel中的数据

    select 列名 as 字段名 from openBowSet('MSDASQL.1','driver=Microsoft Excel Driver(*.xls);dbq=文件存放地址','sele ...

  2. SpringBoot(十三)_springboot上传Excel并读取excel中的数据

    今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...

  3. 无法读取Excel中的数据单元格。有数据,但是读出来全是空值

    C#读取Excel,取值为空的解决办法! C#读取Excel遇到无法读取的解决方法是什么呢?这样在C#读取Excel的过程中有很多问题,那么本文就向你介绍如何解决C#读取Excel遇到无法读取的解决方 ...

  4. 读取Excel中的数据到DataSet

    读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs( ...

  5. java中使用jxl读取excel中的数据

    package bboss; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...

  6. asp.net读取Excel中的数据问题

      1.Microsoft.ACE.OLEDB.12.0 与Microsoft.Jet.OLEDB.4.0 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Exc ...

  7. C# 读取Excel中的数据到DataTable中

    原文地址:http://www.open-open.com/code/view/1420029490093 public DataTable ExcelToDS(string Path) { stri ...

  8. JAVA导入(读取)Excel中的数据(支持xls与xlsx文件)

    一.导入jar包 poi-3.7.jarpoi-scratchpad-3.7.jarpoi-examples-3.7.jarpoi-ooxml-3.7.jarpoi-ooxml-schemas-3.7 ...

  9. Python读取Excel中的数据并导入到MySQL

    """ 功能:将Excel数据导入到MySQL数据库 """ import xlrd import MySQLdb # Open the w ...

随机推荐

  1. PYTHON资源入口汇总

    Python资源入口汇总 官网 官方文档 教程和书籍 框架 数据库 模板 工具及第三方包 视频 书籍 博客 经典博文集合 社区 其他 整理中,进度30% 官网 入口 官方文档 英文 document ...

  2. 光线追踪(raytracing)

    光线追踪(raytracing) 题目描述 考虑一个二维平面,摄像机在(0,0)(0,0)的位置,初始时平面上没有障碍物.现在执行QQ次操作,操作有两种(假设这是第ii次操作,1≤i≤Q1≤i≤Q): ...

  3. ReactJS 学习路线

    Node.js: 推荐采用nvm的方式安装,nvm(Node Version Manager)用于Node的版本管理,方便不同版本的Node之间的切换 安装npm,npm(Node Package M ...

  4. git merge / rebase 分支的新建与合并

    merge https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5% ...

  5. javascript屏蔽脏字

    原文发布时间为:2009-04-16 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  6. 搞定linux的中文输入和vim

    本篇是http://blog.csdn.net/guochaoxxl/article/details/53212090的姊妹篇,无论先操作哪一篇都可以: 1.一言不合先下载,链接: https://p ...

  7. mdev详解【转】

    转自:http://blog.chinaunix.net/uid-29401328-id-5019678.html 一.概述 mdev是busybox提供的一个工具,用在嵌入式系统中,相当于简化版的u ...

  8. [MySQL] lock知识梳理

    MySQL Lock机制 INDEX: MySQL事务隔离级别 MVCC MySQL Lock类型 MySQL MDL CONTENT: 1. MySQL事务隔离级别 Read Uncommit RU ...

  9. Spring Boot学习——统一异常处理

    本随笔记录使用Spring Boot统一处理异常. 本文实例是从数据库中根据ID查询学生信息,要求学生的年龄在14——20岁之间.小于14岁,提示“你可能在上初中”:大于20岁,提示“呢可能在上大学” ...

  10. 关于URL编码 [转]

    转自: http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 作者: 阮一峰 日期: 2010年2月11日 一.问题的由来 URL就是网址, ...