主要代码如下:

定义一个DataSet   存放Excel读取的数据

  1. /// <summary>
  2. /// Excel 表中读取的数据
  3. /// </summary>
  4. public DataSet ExcelData
  5. {
  6. get;
  7. set;
  8. }

获取Excel模板:

  1. //获取Excel模板
  2. private void sbtnGet_Click(object sender, EventArgs e)
  3. {
  4. SaveFileDialog sfd = new SaveFileDialog();
  5. //sfd.Filter = "Excel|*xls";
  6. sfd.Filter = "(*.xls,*.xlsx)|*.xls;*.xlsx";
  7. sfd.FileName = "学生信息"+DateTime.Now.ToString("yyyy-MM-dd")+".xls";
  8. if (sfd.ShowDialog(this) == DialogResult.OK) {
  9. string fileName = Application.StartupPath + "\\config\\学生信息模板.xls";
  10. if (File.Exists(fileName))
  11. {
  12. File.Copy(fileName, sfd.FileName, true);
  13. Function.ShowMsg("下载成功!", CYSoft.Common.CYEnumerate.MsgType.OK);
  14. }
  15. else {
  16. Function.ShowMsg("未找到学生信息模板文件!", CYSoft.Common.CYEnumerate.MsgType.OK);
  17. return;
  18. }
  19. }
  20. }

选择文件:

  1. //选择文件
  2. private void btnFile_Click(object sender, EventArgs e)
  3. {
  4. OpenFileDialog ofd = new OpenFileDialog();
  5. ofd.Filter = "(*.xls,*.xlsx)|*.xls;*.xlsx";
  6. if (ofd.ShowDialog(this) == DialogResult.OK) {
  7. this.btnFile.Text = ofd.FileName;
  8.  
  9. ExcelData = null;
  10.  
  11. #region 读取Excel 文件
  12. //连接字符串 //03版 Microsoft.Jet.OLEDB.4.0
  13. const string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='{1};HDR=Yes;IMEX=1'";
  14.  
  15. OleDbConnection conn = new OleDbConnection(string.Format(strConn, ofd.FileName, "Excel 8.0"));
  16. try
  17. {
  18. conn.Open();
  19. }
  20. catch
  21. {
  22. conn = new OleDbConnection(string.Format(strConn, ofd.FileName, "Excel 12.0"));
  23. try
  24. {
  25. conn.Open();
  26. }
  27. catch (Exception ee)
  28. {
  29. Func.ShowMessage("连接Excel文件错误:" + ee.Message, Func.InfoEnum.HintIE);
  30. return;
  31. }
  32. }
  33.  
  34. DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
  35. DataSet ds = new DataSet();
  36. foreach (DataRow dr in dt.Rows)
  37. {
  38. string sql = "select * from [" + dr["TABLE_NAME"].ToString() + "]";
  39. OleDbDataAdapter aper = new OleDbDataAdapter(sql, conn);
  40. aper.Fill(ds, dr["TABLE_NAME"].ToString());
  41. if (ds.Tables[dr["TABLE_NAME"].ToString()].Columns.Count < 2)
  42. {
  43. continue;
  44. }
  45.  
  46. //dt = myset.Tables[dr["TABLE_NAME"].ToString()];
  47. if (ds == null || ds.Tables[0].Rows.Count < 1)
  48. {
  49. Func.ShowMessage("连接Excel文件错误:", Func.InfoEnum.HintIE);
  50. return;
  51. }
  52. }
  53. conn.Close();
  54. conn.Dispose();
  55. #endregion
  56.  
  57. ExcelData = ds;
  58. //校验数据并加载
  59. InitExcelData2();
  60.  
  61. }
  62. }

说明:

数据校验、加载、保存就不写了

版权声明:本文为博主原创文章,未经博主允许不得转载。

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. [转]C,C++开源项目中的100个Bugs

    [转]C,C++开源项目中的100个Bugs http://tonybai.com/2013/04/10/100-bugs-in-c-cpp-opensource-projects/ 俄罗斯OOO P ...

  2. [Unity菜鸟] Mecanim 系统遇到的问题

    1. 给角色添加一个Animator组件和New State,运行后,摆出这种奇怪的姿势 这是因为没有把动画片段赋给New State,可以看到此时的New State为空,把Idle片段拖进去就好了 ...

  3. 转:Web service是什么?

    作者: 阮一峰 我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web ...

  4. 企业2.0杀出一号种子选手 “Linkwedo”横空出世

    当下,最热门的话题就是企业2.0和1.0的新老交替,在过去的时间里OA在国内几乎是企业1.0的代名词,各大知名OA厂商一直占领着国内的企业市场,但企业2.0在全球越演越烈,甚至大有替代企业1.0的的迹 ...

  5. OpenCV学习笔记:如何扫描图像、利用查找表和计时

    目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...

  6. lunux下查看文件文件夹大小的命令

    使用ls -lht命令显示当前目录下的所有文件,其中有一列就是显示这个文件的大小.如果要看一个文件夹的大小,可以用du -sh *

  7. Layout Resource官方教程(2)用ViewStub引用的嵌入的layout可推迟加载

    Loading Views On Demand THIS LESSON TEACHES YOU TO Define a ViewStub Load the ViewStub Layout YOU SH ...

  8. UIButton图片与文字位置调整

    1:左图右文 默认效果就行 2:左文右图 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addTarget:se ...

  9. How to Set Word Document Properties with C#

    Word properties shows a brief description about one document. Through properties, we can learn gener ...

  10. VS2012启用SQLite的Data Provider

    VS 2012默认是不带的SQLite的Data Provider,所以无法直接在VS 2012里管理SQLite的数据库,自然也不能在VS里像SQL Server那样直接生成Entity Frame ...