C#实现从EXCEL文件读取数据到SqlServer数据库
用第三方组件: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数据库的更多相关文章
- C# WPF 进度条,根据读取数据显示进度条进度,根据Excel文件读取数据,进度条样式
后台代码: //导入 private void Border_MouseLeftButtonUp_2(object sender, MouseButtonEventArgs e) { var path ...
- C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享
using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls")) ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- Excel大批量导入数据到SQLServer数据库-万条只用1秒
private string ExcelToStudent() { /*---*/ var preStr = DateTime.Now.ToString("yyyyMMddHHmmssfff ...
- 从Excel中读取数据(python-xlrd)
从Excel中读取数据(python-xlrd) 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls ...
- 在实现从excel中读取数据作为接口参数遇到的问题
这个算我自己第一次使用python语言实现 一个功能 一.首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的 1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使 ...
- postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库
最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- revit导出模型数据到sqlserver数据库
revit软件可以导出模型数据到sqlserver数据库,有时候,为了对模型做数据分析,需要导出模型的数据,下面总结一下导出过程: 首先在sqlserver中建立一个数据库,如:revit_wujin ...
随机推荐
- C++ Prime:函数
局部静态对象: 某些时候,有必要令局部变量的生命周期贯穿函数调用及之后的时间.可以将局部变量定义成static类型从而获得这样的对象.局部静态对象在程序执行路径第一次经过对象定义语句时初始化,并且直到 ...
- Cocos2d-x 坑之一:Xcode文件真实目录与工程视图目录
Cocos2d-x一定要保证 Xcode文件真实目录与工程视图目录 的一致性,不然,会出现文件读取不了,或include不了的情况. 如果出现此类情况,优先查看真实目录的结构.
- Android Fragment类方法
public void onStart() 当该Fragment对象对用户可见时,该方法会被调用.该方法通常会跟它的Activity的生命周期的Activity.onStart()方法绑定. publ ...
- TOAD Menu Shortcuts 快捷键
TOAD Menu Shortcuts Category Command Shortcut Conflict File AWR Browser File Compare Files File DBMS ...
- http一问一答
1.用户浏览网站时,发起请求和得到响应的基本过程是什么样的?为什么用户键入一个网址往往会发起多个请求? 首先制作一个非常简单的网页,它的内容只有一行: <html><body> ...
- Eclipse&Spring开发开发环境配置
下载Eclipse,打开http://www.eclipse.org/downloads/,选择J2EE开发版: 根据操作系统选择32位还是64位. 开发工具:SpringSource Tool Su ...
- VS2013项目受源代码管理向源代码管理注册此项目时出错
在使用TFS的时候有时出现无法加载项目,后来删除项目添加也是不行 编译项目的时候提示如题的错误,用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就行了. <SccProject ...
- input框自动填充内容背景颜色为黄色解决方法
谷歌浏览器input自动填充内容,背景色会是黄色,想改的话: input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset;} 这种方 ...
- HDOJ/HDU 1113 Word Amalgamation(字典顺序~Map)
Problem Description In millions of newspapers across the United States there is a word game called J ...
- linux下用Apache一个IP多个网站多域名配置方法
如有两个域名,分别是desk.xker.com和tool.xker.com,需把这两个域名都绑定到IP是219.13.34.32的服务器上 1.首先需在域名供应商管理页面指定域名和IP的对应关系 2. ...