引用程序集

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. 在VB中使用Linq To SQLite注意事项

    昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...

  2. jeewx的使用_02 解析微信服务器post过来的数据

    如果在微信公众号接入了第三方的URL,那么用户微信服务器的请求将会被推送到第三方的URL上面,那么该如何解析数据呢?下面来分析 找到MessageUtil.java 这个类中有一个parseXml的静 ...

  3. 腾讯云centos6.5下部署django环境

    基于腾讯云CentOS6.5的环境 首先说下需要用到的软件 1.gcc环境 腾讯云默认是没有gcc编译器的,需要手动安装一下:yum install gcc 2.python环境 因为我用的cento ...

  4. PostgreSQL的 initdb 源代码分析之十五

    继续分析: if (pwprompt || pwfilename) get_set_pwd(); 由于我启动initdb的时候,没有设置口令相关的选项,故此略过. 接下来: setup_depend( ...

  5. Codeforces Round #280 (Div. 2) E. Vanya and Field 数学

    E. Vanya and Field Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/492/pr ...

  6. URAL 1776 C - Anniversary Firework DP

    C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  7. Codeforces Gym 100418J Lucky tickets 数位DP

    Lucky ticketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  8. mmc运输问题

    运输问题,有生产和需求平衡,不平衡, 实际模型,没有多大意义,只是变个符号而已. 下面的是平衡的,如果不平衡,约束变一下就可以了.

  9. 实现一个跨平台的mysock库(windows、linux)

     源码下载 1.首先确定自己的操作系统为32位还是64位: root@bfq:~/mysock# uname -a Linux bfq 3.11.0-26-generic#45~precise1- ...

  10. delphi 16 网页缩放

    网页放大 网页缩小         WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.50; 缩放网页 Ctrl+中键↑ 放大 Ctrl+中键↓ ...