主要代码如下:

定义一个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导入的更多相关文章

  1. winform excel导入--NPOI方式

    项目中要用到excel导入数据,用NPOI方式做了一个demo,记录如下: Form1代码: public Form1() { InitializeComponent(); } private voi ...

  2. winform excel导入--自带office.interop.excel方式

    用npoi方式,遇到一个问题,有的excel用加密软件(盖章,只读等)生成的解析不了,所以换成自带的方式,可以解决. 需要引用系统自带Microsoft.office.interop.excel pu ...

  3. SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework

    7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...

  4. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

  5. winform之excel导入和导出

    引用命名空间   using Microsoft.Office.Interop.Excel;DataGridView 导出到Excel public static void SaveAs(DataGr ...

  6. Open XML操作Excel导入数据

    项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...

  7. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  9. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

随机推荐

  1. CSS3制作时钟

    这个效果是一个CSS3制作的时钟,不过并不是我们传统的时钟风格,分别用三块显示 时.分.秒三个部分,而且这个DEMO中藤藤还为其加上了一个js的效果,能让这个效 果和现实时钟的时间同步.这个效果运用到 ...

  2. [cc150] 硬币问题

    Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 ...

  3. 浏览我的php网页时,出现的都是网页的代码

    添加php模块 ,在apache/conf/httpd.conf,如果是windows下的话,添加如下代码,具体路径你根据具体情况设置#BEGIN PHP INSTALLER EDITS - REMO ...

  4. Twisted 阐述

    原地址:http://bbs.gameres.com/thread_224020.html Firefly为什么使用Twisted?1.基于PythonTwisted是使用Python编写的,强壮的. ...

  5. Unity3d 调用C++的DLL

    原地址:http://www.cnblogs.com/alongu3d/archive/2013/04/20/3031904.html Unity 3D 调用DLL的方法 本文转载:渡蓝的博客园 ht ...

  6. android gridview按钮边框和定制点击颜色

    <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="ht ...

  7. [Gauss]POJ1830 开关问题

    中文题 题意不多说 这题乍一看 就是求个自由未知量个数 相当简单 其实呢 其中要注意的细节还是很多的: 1.光求了自由未知量个数 还不够 ∵求的是可行方案的总数  因此 答案是 2^(自由未知量个数) ...

  8. 李洪强iOS开发之-环信04_消息

    李洪强iOS开发之-环信04_消息 消息:IM 交互实体,在 SDK 中对应的类型是 EMMessage.EMMessage 由 EMMessageBody 组成. 构造消息   构造文字消息 EMT ...

  9. AVPicture、AVFrame和AVPacket

    http://blog.csdn.net/ym012/article/details/6540065 从定义上可知,AVPicture是AVFrame的一个子集,他们都是数据流在编解过程中用来保存数据 ...

  10. ANDROID_MARS学习笔记_S01原始版_005_ProgressBar

    一.代码 1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...