C# 读取Excel中的数据
2023-09-14 09:02:13 时间
/// /summary
/// param name= excelFile Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xl
/// /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(); 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
C#读取Excel表格中数据并返回datatable 在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法。 DataTable GetDataTable(string tableName,string leftTopCel,string rightbutCel)
/// /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(); 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 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 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表格中数据并返回datatable 在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法。 DataTable GetDataTable(string tableName,string leftTopCel,string rightbutCel)
相关文章
- C# 控件双缓冲控制 ControlStyles 枚举详解
- C#写的NoSQL开源项目/系统(系列)
- c#匿名类,匿名对象
- 【C#】Excel导出合并行和列并动态加载行与列
- C#删除字符串最后一个字符的几种方法
- C# 操作Excel之旁门左道 [ C# | Excel ]
- [转] C#操作Excel文件
- C#读取Excel技术概览 (2)
- C# Excel数据验重及Table数据验重
- C# 读取Excel中的数据
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
- Atitit.得到网络邻居列表java php c#.net python
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
- C#隐式运行CMD命令(隐藏命令窗口)
- C#里使用NPOI创建EXCEL文件的简单方法
- C#打印菱形——可自定义菱形大小
- c# 动态实例化一个泛型类
- 数据库中字段类型对应的C#中的数据类型
- C#定时任务框架Quartz.NET介绍与用法