引用程序集

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语言简单实现sizeof功能代码

    sizeof不是函数,而是运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义. 下面给出一个sizeof的一个宏定义实现版本 #defin ...

  2. 怀念我的老师——丁伟岳院士 by 史宇光

       在我的人生中,丁老师对我的帮助是莫大的. 我第一次见到丁老师是在91年8月份的一次南开非线性分析学术会议上(会议期间苏联发生了8.19事件),他当时报告的题目是关于二维调和映射热流短时间爆破的问 ...

  3. Kerberos和NTLM - SQL Server

    当我们使用Windows Authentication去连接SQL Server的时候,SQL Server可能会使用Kerberos或者是NTLM来进行认证,有时间就会因为认证失败的缘故造成各种登录 ...

  4. Codeforces gym 100685 C. Cinderella 水题

    C. CinderellaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/C ...

  5. 怎样在osg中动态的设置drawable的最近最远裁剪面

    // draw callback that will tweak the far clipping plane just    // before rendering a drawable.    s ...

  6. makefile中的patsubst

    函数名称:加前缀函数—addprefix. 函数功能:为“NAMES…”中的每个文件名称加入前缀“PREFIX”.參数“NAMES…”是空格切割的文件名称序列,将“SUFFIX”加入到此序列的每个文件 ...

  7. Windows 7系统安装MySQL5.5.21图解

    Win7系统安装MySQL5.5.21图解 大家都知道MySQL是一款中.小型关系型数据库管理系统,非常具有有用性,对于我们学习非常多技术都有帮助,前几天我分别装了SQL Server 2008和Or ...

  8. hdu 4099 Revenge of Fibonacci 字典树+大数

    将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行. 此题坑点在于 1.字典树的深度不能太大,事实上,超过40在hdu就会MLE…… 2.若大数加法时 ...

  9. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  10. hive 经常使用命令

    1.查看表结构信息   desc formatted table_name;   desc table_name; 查看关联文件: desc extended f_tblog_online_mds; ...