一、操作NPOI从Excel中导入数据到SqlServer数据库中_xls格式

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace NPOI_FromExcelToDatabase02
 8 {
 9     using System.Data.SqlClient;
10     using NPOI.SS.UserModel;
11     using NPOI.HSSF.UserModel;
12     using System.Data;
13     using System.IO;
14 
15     public class Program
16     {
17         private static void Main(string[] args)
18         {
19             //获取数据库连接字符串
20             string excelConnectionString = "Data Source=KAKA-20200829GR;Initial Catalog=DbForNPOI;Integrated Security=True";
21 
22             //实例化数据库连接对象 构造函数传参,指定连接到哪个数据库
23             using (SqlConnection connection = new SqlConnection(excelConnectionString))
24             {
25                 //实例化数据适配器对象,根据sql语句到到指定的数据库匹配数据
26                 using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from BookInfo", connection))
27                 {
28                     //实例化数据表对象 将 Excel表格中的数据暂存到这里,可视为中间容器
29                     DataTable ExcelDataTable = new DataTable();
30 
31                     //实例化大批量复制的对象,构造函数传参:指定数据库,并指定数据表
32                     SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection) { DestinationTableName = "BookInfo" };
33 
34                     //打开数据库连接
35                     connection.Open();
36 
37                     //适配器填充模式 参数一 DataTable的实例,参数二 数据源格式
38                     sqlDataAdapter.FillSchema(ExcelDataTable, SchemaType.Source);
39 
40                     //实例化 hssf 工作簿对象,打开并读取指定的文件,注:该对象只支持xls格式 NPOI
41                     HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(File.OpenRead(@"D:\Users\Desktop\BookInfo.xls"));
42 
43                     //获取指定的数据表,为当前工作簿中的第一张表 下标为0  NPOI
44                     ISheet sheet = hSSFWorkbook.GetSheetAt(0);
45 
46                     //遍历数据表中的所有行
47                     for (int RowIndex = 1; RowIndex < sheet.LastRowNum; RowIndex++)
48                     {
49                         //实例化 数据行对象 为 DatatTable实例的新建行 ADO
50                         DataRow newRow = ExcelDataTable.NewRow();
51 
52                         //获取每一行数据  NPOI
53                         IRow excelRow = sheet.GetRow(RowIndex);
54 
55                         //将NPOI 我的数据库中存了三列所以这里的下表为 0 1 2,根据具体情况进行操作 同时单元格数据类型和数据库中的类型保持一致
56                         newRow[0] = excelRow.Cells[0].NumericCellValue;
57                         newRow[1] = excelRow.Cells[1].StringCellValue;
58                         newRow[2] = excelRow.Cells[2].StringCellValue;
59 
60                         //获取到的每一行数据 保存到DataTable对象的实例中
61                         ExcelDataTable.Rows.Add(newRow);
62                     }
63 
64                     //判断 DataTable对象是否为空,以及行数是否大于0
65                     if (ExcelDataTable != null && ExcelDataTable.Rows.Count > 0)
66                     {
67                         //如果有输入,就将DataTable中的数据写入数据库
68                         sqlBulkCopy.WriteToServer(ExcelDataTable);
69                     }
70 
71                     //关闭复制对象
72                     sqlBulkCopy.Close();
73 
74                     //释放适配器对象资源
75                     sqlDataAdapter.Dispose();
76 
77                     //关闭连接
78                     connection.Close();
79 
80                     //导入成功 友好提示
81                     if (sqlBulkCopy != null)
82                     {
83                         Console.WriteLine("From Excel To DataBase Completed");
84                     }
85 
86                     Console.ReadKey();
87                 }
88             }
89         }
90     }
91 }

 

一、操作NPOI从Excel中导入数据到SqlServer数据库中_xls格式

上一篇:Linux 下 MongoDB 的安装和使用


下一篇:python将Excel文件内容导入Mysql数据