1、操做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_FromExcelToDatabase05
 8 {
 9     using System.Data.SqlClient;
10     using NPOI.HSSF.UserModel;
11     using NPOI.SS.UserModel;
12     using System.IO;
13     using System.Data;
14     using System.Xml.Serialization;
15 
16     internal class Program
17 
18     {
19         private static void Main(string[] args)
20         {
21             //初始化數據庫鏈接對象
22             using (SqlConnection connection = new SqlConnection("Data Source=KAKA-20200829GR;Initial Catalog=DbForNPOI;Integrated Security=True"))
23             {
24                 //根據具體的sql語句初始化適配器對象
25                 using (SqlDataAdapter adapter = new SqlDataAdapter("select * from BookInfo", connection))
26                 {
27                     //實例化數據表對象
28                     DataTable dataTable = new DataTable();
29 
30                     //初始化批量賦值對象 並指定數據表
31                     SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection) { DestinationTableName = "BookInfo" };
32 
33                     //適配器中填充數據表
34                     adapter.FillSchema(dataTable, SchemaType.Source);
35 
36                     //實例化NPOI工做簿對象,打開文件並讀取文件內容,HSSFWorkbook 對象只支持.xls後綴的表格
37                     HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(File.OpenRead(@"D:\Users\Desktop\BookInfo.xls"));
38 
39                     //獲取工做簿中的第一張表
40                     ISheet sheet = hSSFWorkbook.GetSheetAt(0);
41 
42                     //循環表,最大長度爲表的最後一行行號
43                     for (int RowIndex = 1; RowIndex < sheet.LastRowNum; RowIndex++)
44                     {
45                         //dataTable 對象中建立行
46                         DataRow dataRow = dataTable.NewRow();
47 
48                         //NPOI 建立單元格
49                         IRow cells = sheet.GetRow(RowIndex);
50 
51                         //將NPOI獲取的單元格數據分別賦值給dataRow
52                         dataRow[0] = cells.GetCell(0).NumericCellValue;
53                         dataRow[1] = cells.GetCell(1).StringCellValue;
54                         dataRow[2] = cells.GetCell(2).StringCellValue;
55 
56                         //數據表中的全部行添加新獲取的數據行
57                         dataTable.Rows.Add(dataRow);
58                     }
59 
60                     //若是數據表對象的行數大於零說明拿到數據了
61                     if (dataTable.Rows.Count > 0)
62                     {
63                         //打開數據庫鏈接  數據庫鏈接時機,晚打開,早關閉
64                         connection.Open();
65 
66                         //將複製到的對象寫入到數據庫中
67                         sqlBulkCopy.WriteToServer(dataTable);
68 
69                         //關閉複製對象
70                         sqlBulkCopy.Close();
71 
72                         //釋放適配器資源
73                         adapter.Dispose();
74 
75                         //關閉數據庫鏈接
76                         connection.Close();
77 
78                         //友好提示
79                         if (sqlBulkCopy != null)
80                         {
81                             Console.WriteLine(dataTable.Rows.Count);
82 
83                             Console.WriteLine("數據導入到數據庫成功");
84 
85                             Console.ReadKey();
86                         }
87                     }
88                 }
89             }
90         }
91     }
92 }
相關文章
相關標籤/搜索