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列数据栏位的取值,验证值,再导入到 ...
随机推荐
- [转]C,C++开源项目中的100个Bugs
[转]C,C++开源项目中的100个Bugs http://tonybai.com/2013/04/10/100-bugs-in-c-cpp-opensource-projects/ 俄罗斯OOO P ...
- [Unity菜鸟] Mecanim 系统遇到的问题
1. 给角色添加一个Animator组件和New State,运行后,摆出这种奇怪的姿势 这是因为没有把动画片段赋给New State,可以看到此时的New State为空,把Idle片段拖进去就好了 ...
- 转:Web service是什么?
作者: 阮一峰 我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web ...
- 企业2.0杀出一号种子选手 “Linkwedo”横空出世
当下,最热门的话题就是企业2.0和1.0的新老交替,在过去的时间里OA在国内几乎是企业1.0的代名词,各大知名OA厂商一直占领着国内的企业市场,但企业2.0在全球越演越烈,甚至大有替代企业1.0的的迹 ...
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...
- lunux下查看文件文件夹大小的命令
使用ls -lht命令显示当前目录下的所有文件,其中有一列就是显示这个文件的大小.如果要看一个文件夹的大小,可以用du -sh *
- Layout Resource官方教程(2)用ViewStub引用的嵌入的layout可推迟加载
Loading Views On Demand THIS LESSON TEACHES YOU TO Define a ViewStub Load the ViewStub Layout YOU SH ...
- UIButton图片与文字位置调整
1:左图右文 默认效果就行 2:左文右图 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addTarget:se ...
- How to Set Word Document Properties with C#
Word properties shows a brief description about one document. Through properties, we can learn gener ...
- VS2012启用SQLite的Data Provider
VS 2012默认是不带的SQLite的Data Provider,所以无法直接在VS 2012里管理SQLite的数据库,自然也不能在VS里像SQL Server那样直接生成Entity Frame ...