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列数据栏位的取值,验证值,再导入到 ...
随机推荐
- ruby的gem和boundle安装解决办法
gem和boundle安装在国内被墙,淘宝提供了淘宝提供了RubyGems的国内镜像站点,解决办法是: 对于gem: $ gem sources --remove https://rubygems.o ...
- [CC150] 八皇后问题
Write an algorithm to print all ways of arranging eight queens on an 8*8 chess board so that none of ...
- LibLinear(SVM包)使用说明之(三)实践
LibLinear(SVM包)使用说明之(三)实践 LibLinear(SVM包)使用说明之(三)实践 zouxy09@qq.com http://blog.csdn.net/zouxy09 我们在U ...
- flash 类和对象的关系
每个具体的对象后面都隐藏着抽象的类. flash 中as3.0中所有的类,都是为了创建对象所用的.反过来,所创建的任何具体对象都隐藏着抽象的类. 类可以把它看做函数,类的属性是函数的数据,类的方法是函 ...
- 李洪强漫谈iOS开发[C语言-019]-断点调试
- edX Devstack 汉化(i18n)
操练了几日edx Devstack后,发现自己e文还是那么poor,如果和我一样,继续往下看,否则可以轻轻的飘过- 1.运行起 edx Devstack cd /devstack vagrant up ...
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-007-定义切面的around advice
一.注解@AspectJ形式 1. package com.springinaction.springidol; import org.aspectj.lang.ProceedingJoinPoint ...
- 第六章Audio设备
6.1 Audio设备介绍 USB协议制定时,为了方便不同设备的开发商基于USB进行设计,定义了不同的设备类来支持不同类型的设备.虽然在USB标准中定义了USB_DEVICE_CLASS_AUDIO- ...
- 转:为什么Eclipse中 按 F3 无效
通常是由于自己的 工程 建得不对, 没有声明为 JAVA 或 PHP 类型工程. 例如, PHP 工程的 .project 文件中的内容如果如下, F3 应该就可以起作用了. <?xml ver ...
- bzoj2938
显然AC自动机,但什么叫无限生成呢?显然就是在AC自动机上匹配,出现了一个环(不能走结尾节点)直接搜索即可 ..,'] of longint; q,f:..] of longint; can,v,r: ...