C# Excel文件导入操作
Excel文件导出的操作我们经经常使用到,可是讲一个Excel文档导入并显示到界面还是第一次用到。
以下简介下在C#下怎样进行Excel文件的导入操作。
首先加入两个引用
using System.IO;
using System.Data.OleDb;
加入控件openFileDialog
然后我们须要配置Excel的OleDb连接字符串
<span style="font-size:14px;">public const string OledbConnString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = {0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; //Excel的 OleDb 连接字符串</span>
选择一个Excel文件
/// <summary>
/// 选择EXCEL
/// </summary>
private void btn_BrowserExcel_Click(object sender, EventArgs e)
{
DialogResult dr = this.openFileDialog1.ShowDialog();
if (DialogResult.OK == dr) //推断是否选择文件
{
this.txtPath.Text = this.openFileDialog1.FileName;
this.btn_Import.Enabled = true;
}
}
运行导入的操作且绑定数据源
/// <summary>
/// 运行导入操作
/// </summary>
private void btn_Import_Click(object sender, EventArgs e)
{
string path = this.txtPath.Text.Trim();
if (string.IsNullOrEmpty(path))
{
MessageBox.Show("请选择要导入的EXCEL文件。", "信息");
return;
}
if (!File.Exists(path)) //推断文件是否存在
{
MessageBox.Show("信息", "找不到相应的Excel文件,请又一次选择。");
this.btn_BrowserExcel.Focus();
return;
}
DataTable excelTbl = this.GetExcelTable(path); //调用函数获取Excel中的信息
if (excelTbl == null)
{
return;
} DgvImport.DataSource = excelTbl; }
最核心的功能在这里:
/// <summary>
/// 获取Excel文件里的信息,保存到一个DataTable中
/// </summary>
/// <param name="path">文件路径</param>
/// <returns>返回生成的DataTable</returns>
private DataTable GetExcelTable(string path)
{
try
{
//获取excel数据
DataTable dt1 = new DataTable("excelTable");
string strConn = string.Format(OledbConnString, path);
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable dt = conn.GetSchema("Tables");
//推断excel的sheet页数量,查询第1页
if (dt.Rows.Count > 0)
{
string selSqlStr = string.Format("select * from [{0}]", dt.Rows[0]["TABLE_NAME"]);
OleDbDataAdapter oleDa = new OleDbDataAdapter(selSqlStr, conn);
oleDa.Fill(dt1);
}
conn.Close();
return dt1;
}
catch (Exception ex)
{
MessageBox.Show("Excel转换DataTable出错:" + ex.Message);
return null;
}
}
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAyODg2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
看到这里大家肯定会有种似曾相识的感觉,最上面配置连接字符串,这里的GetExcelTable方法。打开连接,查询语句,运行命令,填充table。关闭连接。不就是从数据库查询数据过程的翻版吗?
果然知识都是相通的。
事实上这篇博客能够结合之前的一篇文章《批量保存数据 List 的使用》,利用List<>泛型集合将 表格中数据保存到数据库。
C# Excel文件导入操作的更多相关文章
- 十万级百万级数据量的Excel文件导入并写入数据库
一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...
- (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库
场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL ...
- NodeJs之EXCEL文件导入导出MongoDB数据库数据
NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...
- MVC3学习:将excel文件导入到sql server数据库
思路: 1.将excel文件导入到服务器中. 2.读取excel文件,转换成dataset. 3.循环将dataset数据插入到数据库中. 本例子使用的表格为一个友情链接表F_Link(LinkId, ...
- excel文件导入mysql
在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...
- 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持
网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- kettle 如何将excel文件导入oracle数据库?
1.情景展示 昨日,有一批数据需要导入数据库,但是,plsql不知为何不能导了,于是,我选择使用kettle完成excel数据的导入. 2.准备工作 将对应的数据库所需的jar包拷贝至其lib目录 ...
- Excel文件导入SQL Server数据库
Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...
随机推荐
- tp5使用oss存储图片
1.申请Access Key ID和Access Key Secret,以及创建好你的Bucket 2.通过composer安装oss插件 通过cmd,到项目的目录下,输入下面的指令. compose ...
- iOS数据持久化 -- Core Data
Core Data是一个功能强大的层,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互.Core Data将数据库行转换为OC对象(托管对象)来实现,这样无需 ...
- 41.AngularJS 服务(Service)
转自:https://www.cnblogs.com/best/tag/Angular/ 什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用. A ...
- 利用js与java交互
为了方便网页和应用的交互,安卓系统WebView提供JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaSc ...
- Struts2+MySQL登录注册
下载地址:http://download.csdn.net/detail/qq_33599520/9777172 项目结构图: 代码: package com.mstf.action; import ...
- mac本 maven项目还没发布成功,tomcat就报没有监听ContextLoaderListener 的解决方法
Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL 严重: Error config ...
- jQuery实现tab标签切换效果
技巧一.jQuery :eq() 选择器 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其 ...
- linux命令find命令详解
find 查找文件 find 哪里 什么类型 什么名字 -maxdepth 最大的深度 查找目录的最大深度 find -maxdepth 1 -type d -type 找什么类型的 f fil ...
- Markdown编辑器 常用语法
一.标题 示例: # 1这是一级标题 ## 2这是二级标题 ### 3这是三级标题 #### 4这是四级标题 ##### 5这是五级标题 ###### 6这是六级标题 效果如下: 1这是一级标题 2这 ...
- ifreq、ifconf
网络相关的ioctl请求的request参数及arg地址必须指向的数据类型如下表所示: 接口 SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFBRDADDR SI ...