NPOI导入数据到数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NPOI_FromExcelToDatabase02
{
using System.Data.SqlClient;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System.Data;
using System.IO;
public class Program
{
private static void Main(string[] args)
{
//获取数据库连接字符串
string excelConnectionString = "Data Source=KAKA-20200829GR;Initial Catalog=DbForNPOI;Integrated Security=True";
//实例化数据库连接对象 构造函数传参,指定连接到哪个数据库
using (SqlConnection connection = new SqlConnection(excelConnectionString))
{
//实例化数据适配器对象,根据sql语句到到指定的数据库匹配数据
using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("select * from BookInfo", connection))
{
//实例化数据表对象 将 Excel表格中的数据暂存到这里,可视为中间容器
DataTable ExcelDataTable = new DataTable();
//实例化大批量复制的对象,构造函数传参:指定数据库,并指定数据表
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection) { DestinationTableName = "BookInfo" };
//打开数据库连接
connection.Open();
//适配器填充模式 参数一 DataTable的实例,参数二 数据源格式
sqlDataAdapter.FillSchema(ExcelDataTable, SchemaType.Source);
//实例化 hssf 工作簿对象,打开并读取指定的文件,注:该对象只支持xls格式 NPOI
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(File.OpenRead(@"D:\Users\Desktop\BookInfo.xls"));
//获取指定的数据表,为当前工作簿中的第一张表 下标为0 NPOI
ISheet sheet = hSSFWorkbook.GetSheetAt(0);
//遍历数据表中的所有行
for (int RowIndex = 1; RowIndex < sheet.LastRowNum; RowIndex++)
{
//实例化 数据行对象 为 DatatTable实例的新建行 ADO
DataRow newRow = ExcelDataTable.NewRow();
//获取每一行数据 NPOI
IRow excelRow = sheet.GetRow(RowIndex);
//将NPOI 我的数据库中存了三列所以这里的下表为 0 1 2,根据具体情况进行操作 同时单元格数据类型和数据库中的类型保持一致
newRow[0] = excelRow.Cells[0].NumericCellValue;
newRow[1] = excelRow.Cells[1].StringCellValue;
newRow[2] = excelRow.Cells[2].StringCellValue;
//获取到的每一行数据 保存到DataTable对象的实例中
ExcelDataTable.Rows.Add(newRow);
}
//判断 DataTable对象是否为空,以及行数是否大于0
if (ExcelDataTable != null && ExcelDataTable.Rows.Count > 0)
{
//如果有输入,就将DataTable中的数据写入数据库
sqlBulkCopy.WriteToServer(ExcelDataTable);
}
//关闭复制对象
sqlBulkCopy.Close();
//释放适配器对象资源
sqlDataAdapter.Dispose();
//关闭连接
connection.Close();
//导入成功 友好提示
if (sqlBulkCopy != null)
{
Console.WriteLine("From Excel To DataBase Completed");
}
Console.ReadKey();
}
}
}
}
}