用第三方组件:NPOI组件实现

先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用。使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。

先创建一个实体类:

 [Table("Customer") ]
public class Customer
{
[Key]
public int Id { get; set; }
public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public int Gender { get; set; } }

新建一个实体类Customer

创建一个类去实现读取Excel文件的数据到List<Customer>。

 public class ImportExcel
{
public IList<Customer> ImportExeclToCustomer(string filePath)
{
var customerList = new List<Customer>();
Customer customer;
if(string.IsNullOrEmpty(filePath))
{
return null;
} FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
XSSFWorkbook workBook = new XSSFWorkbook(fileStream); int sheetCount = workBook.Count;
if(sheetCount >)
{
var sheet = workBook.GetSheetAt(); //从第二行开始导入,第一行是列名
for(int i=; i<= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i); //获得该行每一列的值
string tmpFirstName = GetCellValueStringFromISheet(row,);
string tmpLastName = GetCellValueStringFromISheet(row,);
string tmpAge = GetCellValueStringFromISheet(row,);
string tmpGender = GetCellValueStringFromISheet(row,); customer = new Customer()
{
FirstName = tmpFirstName,
LastName = tmpLastName,
Age = Convert.ToInt32(tmpAge),
Gender = Convert.ToInt32(tmpGender)
}; customerList.Add(customer);
}
} return customerList;
} private string GetCellValueStringFromISheet(IRow row, int colIndex)
{
if (row != null)
{
ICell cell = row.GetCell(colIndex);
if (cell != null)
{
if (cell.CellType == CellType.String)
{
return cell.StringCellValue.Trim();
}
if (cell.CellType == CellType.Numeric)
{
return cell.NumericCellValue.ToString().Trim();
}
return cell.StringCellValue.Trim();
}
}
return string.Empty;
}
}

实现读取EXCEL中的数据到List中

在Main函数中方法,实现批量插入数据到SQL Server数据库表中

class Program
{
static void Main(string[] args)
{
string filePath = @"E:\Customer_Test.xlsx"; ImportExcel importExcel = new ImportExcel();
var customerList = importExcel.ImportExeclToCustomer(filePath); #region 添加数据到数据库
using (CodeFirstDBContext context = new CodeFirstDBContext())
{
//EF大数据批量处理
context.BulkInsert(customerList);
context.SaveChanges(); };
#endregion Console.ReadKey();
}
}

Main函数中实现插入数据到数据库中

代码中应用到了EF创建实体,批量插入数据的方法,后续文章中会详细列出

C#实现从EXCEL文件读取数据到SqlServer数据库的更多相关文章

  1. C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式

    后台代码: //导入 private void Border_MouseLeftButtonUp_2(object sender, MouseButtonEventArgs e) { var path ...

  2. C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享

    using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))   ...

  3. SQL语句:把Excel文件中数据导入SQL数据库中的方法

    1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...

  4. Excel大批量导入数据到SQLServer数据库-万条只用1秒

    private string ExcelToStudent() { /*---*/ var preStr = DateTime.Now.ToString("yyyyMMddHHmmssfff ...

  5. 从Excel中读取数据(python-xlrd)

    从Excel中读取数据(python-xlrd) 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls ...

  6. 在实现从excel中读取数据作为接口参数遇到的问题

    这个算我自己第一次使用python语言实现 一个功能 一.首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的 1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使 ...

  7. postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库

    最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...

  8. jsp+servlet上传excel并将数据导入到数据库表的实现方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. revit导出模型数据到sqlserver数据库

    revit软件可以导出模型数据到sqlserver数据库,有时候,为了对模型做数据分析,需要导出模型的数据,下面总结一下导出过程: 首先在sqlserver中建立一个数据库,如:revit_wujin ...

随机推荐

  1. Redhat 安装Oracle DBI和DBD

    Redhat 安装DBI和ORACLE DBD tar -zxvf DBI-1.616.tar.gz cd DBI-1.616 perl Makefile.PL make make install 2 ...

  2. Redundant Call to Object.ToString()

    Redundant Call to Object.ToString() The + operator for string is overloaded to call String.Concat pa ...

  3. linux必会的60个命令

    ◆ 安装和登录命令:login.shutdown.halt.reboot.install.mount.umount.chsh.exit.last: ◆ 文件处理命令:file.mkdir.grep.d ...

  4. mybatis源码分析(2)——事务概述

    这篇文章主要对mybatis中的事务做一简单的分析,帮助读者理清一些概念. 先来看看在JAVA事务的相关技术,在JAVA中有两类事务,JDBC事务和JTA事务,如果是JDBC类型的事务,则是由Conn ...

  5. HDOJ -- 4632 区间DP

    Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/ ...

  6. TFS2010中文版安装

    VS2010的中文版出来一段时间了,对TFS2010的了解,也有一段时间了,只不过中文版还是首次见到.于是把第一次安装的图片分享出来,公供参数. TFS2010安装环境是操作系统为Windows Se ...

  7. 10个有关RESTful API良好设计的最佳实践(转)

    原文地址:http://www.jdon.com/soa/10-best-practices-for-better-restful-api.html Web API已经在最近几年变成重要的话题,一个干 ...

  8. Java异常错误的面试题及答案

    1) Java中什么是Exception? 这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问.我从来没见过面高级或者资深工程师的 时候有人问这玩意,但是对于菜鸟,是很愿意问这个的.简单来说, ...

  9. wall

    wall 是在linux中用于发送广播信息的命令,他可以让所有的在线用户都收到信息 wall hi 然后,按Ctrl + c 退出

  10. Testing和Instrumentation(转)

    Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架.尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面 ...