• 一、操作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:UsersDesktopBookInfo.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 }
  • 相关阅读:
    工资是用来支付给责任的,责任越大,工资越高。 涨工资,是因为承担了更大的责任。
    水平分库分表的关键问题及解决思路
    APP多版本共存,服务端如何兼容?
    ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
    Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭
    Java进阶 创建和销毁对象
    Java OCR tesseract 图像智能字符识别技术
    网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
    从原理角度解析Android (Java) http 文件上传
    android pop3与imap方式接收邮件(javamail)
  • 原文地址:https://www.cnblogs.com/ABC-wangyuhan/p/13753448.html
Copyright © 2020-2023  润新知