WinForm Excel导入
主要代码如下:
定义一个DataSet 存放Excel读取的数据
/// <summary>
/// Excel 表中读取的数据
/// </summary>
public DataSet ExcelData
{
get;
set;
}
获取Excel模板:
//获取Excel模板
private void sbtnGet_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
//sfd.Filter = "Excel|*xls";
sfd.Filter = "(*.xls,*.xlsx)|*.xls;*.xlsx";
sfd.FileName = "学生信息"+DateTime.Now.ToString("yyyy-MM-dd")+".xls";
if (sfd.ShowDialog(this) == DialogResult.OK) {
string fileName = Application.StartupPath + "\\config\\学生信息模板.xls";
if (File.Exists(fileName))
{
File.Copy(fileName, sfd.FileName, true);
Function.ShowMsg("下载成功!", CYSoft.Common.CYEnumerate.MsgType.OK);
}
else {
Function.ShowMsg("未找到学生信息模板文件!", CYSoft.Common.CYEnumerate.MsgType.OK);
return;
}
}
}
选择文件:
//选择文件
private void btnFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "(*.xls,*.xlsx)|*.xls;*.xlsx";
if (ofd.ShowDialog(this) == DialogResult.OK) {
this.btnFile.Text = ofd.FileName; ExcelData = null; #region 读取Excel 文件
//连接字符串 //03版 Microsoft.Jet.OLEDB.4.0
const string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='{1};HDR=Yes;IMEX=1'"; OleDbConnection conn = new OleDbConnection(string.Format(strConn, ofd.FileName, "Excel 8.0"));
try
{
conn.Open();
}
catch
{
conn = new OleDbConnection(string.Format(strConn, ofd.FileName, "Excel 12.0"));
try
{
conn.Open();
}
catch (Exception ee)
{
Func.ShowMessage("连接Excel文件错误:" + ee.Message, Func.InfoEnum.HintIE);
return;
}
} DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
DataSet ds = new DataSet();
foreach (DataRow dr in dt.Rows)
{
string sql = "select * from [" + dr["TABLE_NAME"].ToString() + "]";
OleDbDataAdapter aper = new OleDbDataAdapter(sql, conn);
aper.Fill(ds, dr["TABLE_NAME"].ToString());
if (ds.Tables[dr["TABLE_NAME"].ToString()].Columns.Count < 2)
{
continue;
} //dt = myset.Tables[dr["TABLE_NAME"].ToString()];
if (ds == null || ds.Tables[0].Rows.Count < 1)
{
Func.ShowMessage("连接Excel文件错误:", Func.InfoEnum.HintIE);
return;
}
}
conn.Close();
conn.Dispose();
#endregion ExcelData = ds;
//校验数据并加载
InitExcelData2(); }
}
说明:
数据校验、加载、保存就不写了
版权声明:本文为博主原创文章,未经博主允许不得转载。
WinForm Excel导入的更多相关文章
- winform excel导入--NPOI方式
项目中要用到excel导入数据,用NPOI方式做了一个demo,记录如下: Form1代码: public Form1() { InitializeComponent(); } private voi ...
- winform excel导入--自带office.interop.excel方式
用npoi方式,遇到一个问题,有的excel用加密软件(盖章,只读等)生成的解析不了,所以换成自带的方式,可以解决. 需要引用系统自带Microsoft.office.interop.excel pu ...
- SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework
7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...
- C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]
[csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...
- winform之excel导入和导出
引用命名空间 using Microsoft.Office.Interop.Excel;DataGridView 导出到Excel public static void SaveAs(DataGr ...
- Open XML操作Excel导入数据
项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
随机推荐
- 用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法
每个人都讨厌广告.看电视.看电影.看优酷.看网页时,对满天飞的广告也是深恶痛绝.广告是一个不招人喜欢的东西.但是,对一个中小网站站长/博客主来说,广告几乎是唯一的能成支持网站/博客正常运转的资金来源. ...
- 转:Linux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- ZOJ 3609 Modular Inverse
点我看题目 题意 : 这个题是求逆元的,怎么说呢,题目看着很别扭....就是给你a和m,让你求一个最小的x满足a-1≡x (mod m).或者ax≡1 (mod m).通俗点说呢,就是找一个最小的x, ...
- 8086 cpu为什么要把段地址*16+偏移量形成物理地址呢?
8086 cpu为什么要把段地址*16+偏移量形成物理地址呢? 这是因为,8086地址线是20位,段寄存器是16位,将段寄存器*16实际上就是向左移动4位,形成20位和8086的二十位地址线匹配. I ...
- RTMP
实时消息传输协议 RTMP(Real Time Messaging Protocol) http://blog.csdn.net/defonds/article/details/17403225 译序 ...
- money 和 smallmoney
代表货币或货币值的数据类型. 数据类型 范围 存储 money -922,337,203,685,477.5808 到 922,337,203,685,477.5807 8 字节 smallmoney ...
- 在Hadoop伪分布式模式下安装Hbase
安装环境:Hadoop 1.2.0, Java 1.7.0_21 1.下载/解压 在hbase官网上选择自己要下的hbase版本,我选择的是hbase-0.94.8. 下载后解压到/usr/local ...
- IDM和ODM
DM (Integrated Data Multiplexer):综合数据复用器[1] 综合数据复用器是一种数据复用设备,它可以将多路RS232.RS485及数字语音等多种数据复用到E1传输通道或光 ...
- bzoj1705
话说这题很久以前就写过,然后好像一直忘了写题解…… 以前看这道题还觉得挺难的,现在觉得好水 首先朴素的想法肯定是动归 f[i,j]表示到处理到第i根电线,最终高度为j的最小花费 f[i,j]:=min ...
- 按CTRL,SHIFT,ALT等键扩展easyui的datagrid多选实现
//------------------------------------------------------------------------------- // 当然页面文件中还需要引入的文件 ...