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 >0)
            {
                var sheet = workBook.GetSheetAt(0);

                //从第二行开始导入,第一行是列名
                for(int i=1; i<= sheet.LastRowNum; i++)
                {
                    IRow row = sheet.GetRow(i);

                    //获得该行每一列的值
                    string tmpFirstName = GetCellValueStringFromISheet(row,0);
                    string tmpLastName = GetCellValueStringFromISheet(row,1);
                    string tmpAge = GetCellValueStringFromISheet(row,2);
                    string tmpGender = GetCellValueStringFromISheet(row,3);

                    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创建实体,批量插入数据的方法,后续文章中会详细列出

时间: 2024-12-28 17:06:43

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

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

using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))        {            //创建工作簿对象接收文件流(Excel信息)            IWorkbook workbook = new HSSFWorkbook(fileReader);            //工作簿共有几个表            //int count = wor

.NET从EXCEL文件导入数据

.NET com组件 这种方法在计算机没有安装office套件时,也是能够使用的.所以不依赖于软件, 但是还是需要xcel.exe编译后的dll文件打包到相应的程序中来引用.这样将dll文件" 随身携带",就可以了.还是挺不错的! 1.注册Microsoft.Office.Interop.Excel.dll 在office安装文件夹下找到excel.exe,路径D:\Program Files(x86)\Microsoft Office\Office15.将excel.exe文件复制到

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

这个算我自己第一次使用python语言实现 一个功能 一.首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的 1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使用它 安装方法: a.可以直接把文件拷贝到 $python_dir/Lib,这方法我试了一下不可以,我也不知道为什么 b.我下载了xlrd模块,在目录下运行了python setup.py install,成功了 可以去https://pypi.python.org/pypi/xlrd   官网下载

Java读写Excel文件中数据的简便方法

Java开发项目中经常会碰到处理Excel文件中数据的情况,这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出2010年1月1日(含)之后,并且SELLERID等于18的订单.找到的数据写入order_result.xls文件. Excel文件orders.xls的内容如下: ORDERID CLIENT SELLERID AMOUNT ORDERDATE 1 UJRNP 17 392 2008/11/2 15:28 2 SJCH 6 4802 200

C# 各种导入 Excel 文件的数据的方法总结

在导入之前都需要将上传的文件保存到服务器,所以避免重复的写这些代码,先贴出上传文件并保存到服务器指定路径的代码. protected void btnImport_Click(object sender, EventArgs e) { Random random = new Random(); ImportClass Import = new ImportClass(); //保存文件的虚拟路径 string path = "Import/"; //获取选择的文件名 string fi

C#操作Excel文件(读取Excel,写入Excel)

看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,如今共享大家,希望给大家可以给大家带了一定的帮助.另外我们还要注意一些简单的问题1.excel文件仅仅能存储65535行数据,假设你的数据大于65535行,那么就须要将excel切割存放了.2.关于乱码,这主要是字符设置问题. 1.载入Excel(读取excel内容)返回值是一个DataSet //载入Excel public static DataSet LoadDataFro

R读写Excel文件中数据的方法

用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒是比较通用比较稳定,但又存在操作麻烦,无法程序化处理多个文件的问题.提取xml也是个办法,但步骤太多代码太复杂,令人望而生畏.用剪贴板转换也不好,这同样需要人工参与,还不如存为csv. 相比之下,用gdata包来读取,配合WriteXLS写入Excel则可以很好的避开上述麻烦.这两个包都支持Exce

C#各种导入Excel文件的数据的方法总结

在导入前都需要将上传的文件保存到服务器,所以避免重复的写这些代码,先贴出上传文件并保存到服务器指定路径的代码 protected void btnImport_Click(object sender,EventArgs e) { Random random=new Random(); ImportClass Import=new ImportClass(); //保存文件的虚拟路径 string path="Import/"; //获取选择的文件名 string fileName=Fi

采用OleDB读取EXCEL文件 读取数字后,字符串无法读取

很多人采用OleDB读取EXCEL文件的时候会发现,当一列数据以数字开头的时候,后面的字符串无法读取,今天就给大家分享一下解决此问题的小窍门. 1.把列标题当做数据来读取(HDR=NO设置把第一行当做数据而不是表头来处理):  string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" +                     &