读取Excel中数据
#region 读取导入Excel数据
/// <summary>
///
/// </summary>
/// <param name="filename"></param>
/// <param name="fields"></param>
/// <returns></returns>
public DataSet ReadDataFromExcel(string filename, string fields)
{
DataSet ds = new DataSet();
try
{
string cnn = string.Empty;
string ext = Path.GetExtension(filename).ToLower();
if (ext == ".xls")
{
cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char) + "Excel 8.0;HDR=Yes;IMEX=1;" + (char);
}
else if (ext == ".xlsx")
{
cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char) + "Excel 12.0;HDR=Yes;IMEX=1;" + (char);
}
else
{
throw new Exception("读取失败,非excel文件格式。");
}
using (OleDbConnection connection = new OleDbConnection(cnn))
{
connection.Open();
DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow row in tables.Rows)
{
string table = row["TABLE_NAME"].ToString();
DataTable dt = ReadEachExcelSheetData(connection, table, fields);
if (dt != null)
{
ds.Tables.Add(dt.Copy());
}
}
}
return ds;
}
catch (Exception ex)
{
throw new Exception("数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!");
}
}
public DataTable ReadEachExcelSheetData(OleDbConnection connection, string table, string fields)
{
try
{
string sql = string.Empty;
string query = string.Empty;
if (fields.IndexOf(',') > )
{
foreach (string column in fields.Split(','))
{
query += "[" + column + "],";
}
query = query.Trim(',');
}
else
{
query = fields;
}
sql = @"
SELECT
{0}
FROM
[{1}]
";
sql = string.Format(sql, query, table);
DataSet ds = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);
adapter.Fill(ds, table);
if (ds != null && ds.Tables.Count > && ds.Tables[].Rows.Count > )
{
return ds.Tables[];
}
}
catch (Exception ex)
{
throw ex;
}
return null;
}
private DataSet GetDataFromExcel(string filename,string fields)
{
DataSet ds = new DataSet();
string cnn = string.Empty;
string ext = Path.GetExtension(filename).ToLower();
if (ext == ".xls")
{
cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char) + "Excel 8.0;HDR=Yes;IMEX=1;" + (char);
}
else if (ext == ".xlsx")
{
cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char) + "Excel 12.0;HDR=Yes;IMEX=1;" + (char);
}
else
{
throw new Exception("读取失败,非excel文件格式。");
}
using (OleDbConnection connection = new OleDbConnection(cnn))
{
connection.Open();
DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = tables.Rows[]["TABLE_NAME"].ToString();
string sql = "select * from [{0}]";
sql = string.Format(sql, tableName);
OleDbCommand command = connection.CreateCommand();
command.CommandText = sql;
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(ds);
return ds;
}
}
#endregion
读取Excel中数据的更多相关文章
- vue中读取excel中数据
安装xlsx npm install xlsx --save-dev 安装好后在需要的页面 引入插件 import xlsx from 'xlsx' 调用 $('#uploadFile').chang ...
- java中使用jxl读取excel中的数据
package bboss; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...
- sql 读取excel中的数据
select 列名 as 字段名 from openBowSet('MSDASQL.1','driver=Microsoft Excel Driver(*.xls);dbq=文件存放地址','sele ...
- SpringBoot(十三)_springboot上传Excel并读取excel中的数据
今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...
- 无法读取Excel中的数据单元格。有数据,但是读出来全是空值
C#读取Excel,取值为空的解决办法! C#读取Excel遇到无法读取的解决方法是什么呢?这样在C#读取Excel的过程中有很多问题,那么本文就向你介绍如何解决C#读取Excel遇到无法读取的解决方 ...
- 读取Excel中的数据到DataSet
读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs( ...
- C# 读取Excel中的数据
#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name=&quo ...
- asp.net读取Excel中的数据问题
1.Microsoft.ACE.OLEDB.12.0 与Microsoft.Jet.OLEDB.4.0 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Exc ...
- 上传读取Excel文件数据
/// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...
随机推荐
- Chinese Postman Problem Aizu - DPL_2_B(无向图中国邮路问题)
题意: 带权无向图上的中国邮路问题:一名邮递员需要经过每条边至少一次,最后回到出发点,一条边多次经过权值要累加,问最小总权值是多少.(2 <= N <= 15, 1 <= M < ...
- Oracle JDK迁移指南
Oracle JDK迁移指南 https://docs.oracle.com/en/java/javase/11/migrate/index.html#JSMIG-GUID-C25E2B1D-6C24 ...
- HNOI2017单旋
单旋 这道题做法贼多,LCT,splay,线段树什么的貌似都行. 像我这种渣渣只会线段树了(高级数据结构学了也不会用). 首先离线所有操作,因为不会有两个点值重复,所以直接离散. 一颗线段树来维护所有 ...
- 洛谷 P1121 环状最大两段子段和 解题报告
P1121 环状最大两段子段和 题目描述 给出一段环状序列,即认为\(A_1\)和\(A_N\)是相邻的,选出其中连续不重叠且非空的两段使得这两段和最大. 输入输出格式 输入格式: 第一行是一个正整数 ...
- 洛谷 P4408 逃学的小孩 解题报告
P4408 [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?&q ...
- Spring Cloud学习(一)
Spring Cloud是什么? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载 ...
- CF 991
843名... 正规比赛肯定要掉分了...... 就算C没WA也是765名...为什么会这么菜呢? A,水.我加了两个特判. B,水.以 n * 4.5 为目标即可. C,裸二分,可耻的WA了一次是为 ...
- MQTT——取消订阅报文和断开连接报文
笔者已经把连接报文,订阅报文,发布报文都讲解了完了.而接下来就是取消订阅报文和断开连接报文.和其他的报文比较的话,他们显示非常简单.甚至笔者觉得可以不必要拿出来讲.只要看一下MQTT文档就没有什么不清 ...
- 【CH5105】cookies 贪心+DP
通过邻项交换法可知,怨气值大的孩子分得的饼干数也应该多(否则交换之后得到的解更优). 观察目标函数的性质,可知目标函数本身是由孩子饼干数的相对大小得到,因此此题中关注的是相对大小. 状态设计:\(dp ...
- [luogu1327][生活大爆炸石头剪子布]
题目地址 https://www.luogu.org/problemnew/show/P1328 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负. ...