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:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...
随机推荐
- iOS 中的UIWindow
使用Xcode新建一个工程后,Xcode会自动新建一些文件,其中有AppDelegate.h,AppDelegate.m,ViewController.h,ViewController.m,Main. ...
- nexus建立maven仓库私服及Snapshots、release的版本管理
环境搭建 1.linux安装maven wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-mave ...
- ios之点语法
第一个object c 程序 首先新建一个项目,“create a new Xcode project"-"OS X下的Application"-"Comman ...
- C#操作Excel的OLEDB方式与COM方式比较
2013-03-15 13:42:54 作者:有理想的码农 在对Excel进行读写操作时,使用微软自身提供的解决方案,有两种(第三方方式除外),分别是OLEDB方式和调用COM组件的方式 ...
- java 分页
ListAction.java package com.sy.action; import java.util.List; import com.opensymphony.xwork2.ActionS ...
- Python requests模块
import requests 下面就可以使用神奇的requests模块了! 1.向网页发送数据 >>> payload = {'key1': 'value1', 'key2': [ ...
- C# 常用日期类型转换帮助类
本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html 最近工作比较忙,与此同时自己也在业余时间开发一个电子商务网站.虽然每天都很累,但感觉过的 ...
- 【转】Android 4.4前后版本读取图库图片和拍照完美解决方案
http://blog.csdn.net/zbjdsbj/article/details/42387551 4.3或以下,选了图片之后,根据Uri来做处理,很多帖子都有了,我就不详细说了.主要是4.4 ...
- JAVA实现HTTPserver端
用java socket实现了一个简单的httpserver, 能够处理GET, POST,以及带一个附件的multipart类型的POST.尽管中途遇到了非常多问题, 只是通过在论坛和几个高手交流了 ...
- 【转】Dijkstra算法(单源最短路径)
原文:http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路 ...