引用程序集

Microsoft.Office.Core

Microsoft.Office.Interop.Excel

 using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Excel = Microsoft.Office.Interop.Excel; private void btnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); //打开文件对话框
fd.Filter = @"Excel文件 (*.xls; *.xlsx)|*.xls; *.xlsx|
All Files (*.*)|*.*"; //过滤exl文件 if (fd.ShowDialog() == DialogResult.OK)
{
string fileName = fd.FileName;//文件名
try
{
LoadExcelData(fileName);
// LoadData();
}
catch (Exception ex)
{
throw;
}
finally
{ } }
} private void LoadExcelData(string fileName)
{ Excel.Application excel = new Excel.ApplicationClass();
try
{
if (excel == null)
{
MsgDialog.Show("无法打开Excle文件!", this);
}
else
{
excel.Visible = false;
excel.UserControl = true;
Excel.Workbook wb = excel.Application.Workbooks.Open(fileName, missing, missing, missing, missing,
missing,
missing, missing, missing, true, missing, missing, missing, missing, missing);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item();
int columnsint = ws.UsedRange.Cells.Columns.Count; //得到列数
int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数 StringBuilder sqllist = new StringBuilder();
string sqltext = ""; string column1, column2, column3;
bool repeat = false; for (int i = ; i <= rowsint; i++)
{ //this.barButtonItem5.Caption = "正在扫描第" + i + "条记录,共" + rowsint + "条"; sqltext = "";
if (((Excel.Range)ws.Cells[i, ]).Value2 == null)
{
column1 = "";
}
else
{
column1 = ((Excel.Range)ws.Cells[i, ]).Value2.ToString();
} if (((Excel.Range)ws.Cells[i, ]).Value2 == null)
{
column2= "";
}
else
{
column2= ((Excel.Range)ws.Cells[i, ]).Value2.ToString();
} if (((Excel.Range)ws.Cells[i, ]).Value2 == null)
{
column3= "";
}
else
{
column3= ((Excel.Range)ws.Cells[i, ]).Value2.ToString();
} string chRepSql = @"select * from table where column1 ='" + column1 + "' and column2 ='" + column2 + "' and column3 ='"
                           + column3 + "';
int countR = DbHelperSQL.Query(chRepSql).Tables[].Rows.Count;
if (countR > )
{
repeat = true;
}
if (repeat)
{
sqltext =
" update table set column2 ='" + column2 + "' and column3 ='" + column3 + "' where column1 ='" + column1
+ "\r\n";
}
else
{
sqltext =
" insert into table(column1, column2, column3)" +
"VALUES('" + column1 + "','" + column2+ "','" + column3 + "')" + "\r\n";
}
sqllist.Append(sqltext);
} if (sqllist.ToString() == "")
return;
string msg;
SqlTransaction trans = null;
try
{
trans = _connection.BeginTransaction();
SqlCommand command = new SqlCommand();
command.Connection = _connection;
command.Transaction = trans;
command.CommandText = sqllist.ToString(); command.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
msg = "保存过程中出错!错误信息如下:\r\n " + ex.ToString();
XtraMessageBox.Show(msg);
}
msg = "导入成功!";
MsgDialog.Show(msg, this);
}
}
catch (Exception ex)
{
string msg = "保存过程中出错!错误信息如下:\r\n " + ex.ToString();
XtraMessageBox.Show(msg);
}
finally
{
excel.Quit();
excel = null; }
}

总结:把exl导入数据库时,把SQL语句组成的字符串一次导入,只连接一次数据库,避免反复连接数据库,速度更快。

C#_简单Excel导入的更多相关文章

  1. 简单excel导入导出

    import java.io.File;import java.io.IOException; import jxl.Cell;import jxl.Sheet;import jxl.Workbook ...

  2. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  3. Mego(04) - NET简单实现EXCEL导入导出

    前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...

  4. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  5. Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)

    Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java   版权声明:本 ...

  6. 简单的Excel导入(上传、解析、持久化)

    /** * excel导入 * @param req * @param resp * @return */ public void excelImport(){ //先将要上传的Excel文件上传到项 ...

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

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

  8. 安全的将excel导入sqlite3的解决方案

    最近在做一个小项目时,需要把一个excel中的数据保存到sqlite3数据库中以备后用,表中有字符也有数字,要用到特定的数据类型方便后续使用,参照网上的方法,将excel文件转换为csv文件后,在导入 ...

  9. Excel导入导出的业务进化场景及组件化的设计方案(上)

    1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...

随机推荐

  1. [置顶] 函数传递不定参数理解-c语言

    感性认识 Typedef char *va_list;/*这个在<stdatg.h>中有定义*/ #define va_start(ap,p) (ap=(char*)(&(p)+1 ...

  2. hibernate中session,HQL,持久化,一对多,多对一

    package com.hanqi.test; import java.util.Date; import java.util.List; import org.hibernate.Query; im ...

  3. SQL Server活动监视器

    打开SQL Server活动监视器:

  4. phpStudy 2014的Apache虚拟主机配置

    安装phpStudy直接百度下载,傻瓜式安装很简单,一直点击下一步即可,中途根据个人爱好设置WWW目录,我的设置在D盘根目录里. 打开虚拟主机配置,打开D:\phpStudy\Apache\conf下 ...

  5. utf-8 和gbk编码的差别

    UTF- 8: 是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码. GBK 是国家标准GB2312基础上扩容后兼容GB2312的标准. GBK的文 ...

  6. w3cmark前端精彩博文周报 10.13-10.19

    w3cmark推出每周精选前端博文推荐,通过阅读别人的代码,学习别人的经验,提升自己的水平.欢迎关注 @前端笔记网 微博.其实如果是关注我们微博的朋友都对下面的文章熟悉,因为我们会一旦发现有价值的.精 ...

  7. Nagios在Ubuntu server上的安装配置

    首先我参看的是Nagios的官方文档,Nagios – Installing Nagios Core From Source——The Industry Standard in IT Infrastr ...

  8. [Angular 2] Understanding @Injectable

    In order to resolve a dependency, Angular’s DI uses type annotations. To make sure these types are p ...

  9. java中接口的定义与实现

    1.定义接口     使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成.定义接口的基本格式例如以下: [修饰符] in ...

  10. 文本编辑器Nano实用快捷键

    一.复制.剪切和粘贴文本 1.行复制.剪切和粘贴 Alt+6:复制光标所在行. Ctrl+K:剪切光标所在行. Ctrl+U:粘贴. 2.自由复制.剪切和粘贴 自由复制: Ctrl+6:设置复制文本的 ...