C#_简单Excel导入
引用程序集
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导入的更多相关文章
- 简单excel导入导出
import java.io.File;import java.io.IOException; import jxl.Cell;import jxl.Sheet;import jxl.Workbook ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- Mego(04) - NET简单实现EXCEL导入导出
前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- 简单的Excel导入(上传、解析、持久化)
/** * excel导入 * @param req * @param resp * @return */ public void excelImport(){ //先将要上传的Excel文件上传到项 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- 安全的将excel导入sqlite3的解决方案
最近在做一个小项目时,需要把一个excel中的数据保存到sqlite3数据库中以备后用,表中有字符也有数字,要用到特定的数据类型方便后续使用,参照网上的方法,将excel文件转换为csv文件后,在导入 ...
- Excel导入导出的业务进化场景及组件化的设计方案(上)
1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...
随机推荐
- Autofac介绍
原帖:http://www.cnblogs.com/xupng/archive/2011/07/12/2104766.html Autofac为何物?它是.NET世界里现存的几种IOC框架其中之一,传 ...
- IE 、Firefox、Chrome 浏览器在 F12 控制台下切换至不同框架介绍
有不少网页的页面,还在使用 iframe 标签,而此时,相当于页面有两个 window 对象,一个为当前页面 window ,另一个则为 iframe 页面下的 window .因为,有时候需要在 c ...
- js奇葩错误
局部刷新中显示图片: 错误写法:var innerDiv = "<p class='town_con' id='city1'>"; var d ...
- protoc-gen-lua
lua里使用proto buffer protoc-gen-lua 官方不维护了,自己维护个:protoc-gen-lua int64支持,将64位int转换成lua的string. message相 ...
- 【android-cocos2d-X 环境配置】在Mac下搭建Cocos2d-X-android开发环境!
转自:http://blog.csdn.net/dingkun520wy/article/details/17097593 (1)下载 首先要下载好要用到的东西: 1.android-SDK 地址是 ...
- Mac下使用Fiddler
Fiddler是用C#开发的. 所以Fiddler不能在Mac系统中运行. 没办法直接用Fiddler来截获MAC系统中的HTTP/HTTPS, Mac 用户怎么办呢? Fiddler可以允 ...
- python中文处理之encode/decode函数
python中文处理相信迷惑过不少同学.下面说说python2/3的encode和decode函数. python2中,使用decode()和encode()来进行解码和编码,以unicode类型作为 ...
- [iOS 10 day by day] Day 1:开发 iMessage 的第三方插件
本文介绍了 iOS 10 的一个重要更新:Messages 应用支持第三方插件了.作者用一个小游戏作为例子,说明了插件开发从建工程开始,到绘制界面.收发消息的全过程. <iOS 10 day b ...
- poj1328解题报告(贪心、线段交集)
POJ 1328,题目链接http://poj.org/problem?id=1328 题意: 有一海岸线(x轴),一半是陆地(y<0).一半是海(y>0),海上有一些小岛(用坐标点表示P ...
- javascript的变量、作用域和内存问题
基本类型和引用类型的值执行环境垃圾收集 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段引用类型值指那些可能由多个值构成的对象 基本数据类型 ...