博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用NPOI,完成数据的导入导出
阅读量:5263 次
发布时间:2019-06-14

本文共 4301 字,大约阅读时间需要 14 分钟。

解释下流程,第一步:将数据库表中的数据导出到excel表

                          第二步:将excel表中的数据再插入到数据库表中(当然没有做重复性校验,测试而已)
注:表结构很简单:
  Id (int) 自增
  Name (nvarchar(20))
  Age (int)
  Phone(nvarchar(13))

 

1  class Program  2     {  3         /* 首先用ado.net简单封装下 Insert和Select操作,导入导出要用到*/  4   5         //封装ado.net  Insert操作  6         static void Insert(string sql, params SqlParameter[] parameters)  7         {  8             string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;  9             using (SqlConnection conn = new SqlConnection(connstr)) 10             { 11                 conn.Open(); 12                 using (SqlCommand cmd = conn.CreateCommand()) 13                 { 14                     cmd.CommandText = sql; 15                     cmd.Parameters.AddRange(parameters); 16                     cmd.ExecuteNonQuery(); 17                 } 18             } 19         } 20  21         //封装ado.net Select操作 22         static DataTable Select(string sql, params SqlParameter[] parameters) 23         { 24             DataTable table = new DataTable(); 25             string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; 26             using (SqlConnection conn = new SqlConnection(connstr)) 27             { 28                 conn.Open(); 29                 using (SqlCommand cmd = conn.CreateCommand()) 30                 { 31                     cmd.CommandText = sql; 32                     cmd.Parameters.AddRange(parameters); 33                     using (SqlDataReader read = cmd.ExecuteReader()) 34                     { 35                         table.Load(read); 36                     } 37                 } 38             } 39             return table; 40         } 41      42         /*封装导入导出方法*/ 43  44         //从数据库表中导出数据到excel表中 45         static void Export_toxlsx() 46         { 47             IWorkbook wb = new XSSFWorkbook(); 48             ISheet sheet =  wb.CreateSheet("sheet1");  //创建工作簿“sheet1” 49            /*表头*/ 50            IRow title =  sheet.CreateRow(0); 51             ICell cell_0 = title.CreateCell(0); 52             cell_0.SetCellValue("姓名"); 53             ICell cell_1 = title.CreateCell(1); 54             cell_1.SetCellValue("年龄"); 55             ICell cell_2 = title.CreateCell(2); 56             cell_2.SetCellValue("电话"); 57             /*表内容*/ 58             DataTable tb = Select("select * from t_test"); 59             int i = 1; 60             foreach(DataRow item in tb.Rows) 61             { 62                 IRow row = sheet.CreateRow(i); 63                 ICell cell0 = row.CreateCell(0); 64                 cell0.SetCellValue((string)item["Name"]); 65                 ICell cell1 = row.CreateCell(1); 66                 cell1.SetCellValue((int)item["Age"]); 67                 ICell cell2 = row.CreateCell(2); 68                 cell2.SetCellValue((string)item["Phone"]); 69                 i++; 70             } 71  72             using (Stream stream = File.OpenWrite(@"e:/test/test.xlsx")) 73             { 74                 wb.Write(stream); //将使用npoi创建的xlsx文件写入到流中 75             } 76             Console.WriteLine("Export Done!"); 77         } 78         //从excel表中将数据导入到数据库中 79         static void Import_toDb() 80         { 81             IWorkbook wb = WorkbookFactory.Create(@"e:/test/test.xlsx"); 82             ISheet sheet = wb.GetSheetAt(0); //获取test.xlsx的第一个工作簿 83  84             for(int i=1; i<=sheet.LastRowNum;i++) //从第一行开始读,第0行为表头 85             { 86                 IRow row = sheet.GetRow(i); 87                 ICell cell_0 = row.GetCell(0); 88                 ICell cell_1 = row.GetCell(1); 89                 ICell cell_2 = row.GetCell(2); 90  91                 Insert("insert into t_test (Name,Age,Phone) values(@Name,@Age,@Phone)", 92                     new SqlParameter("@Name",cell_0.StringCellValue), 93                     new SqlParameter("@Age",(int)cell_1.NumericCellValue), 94                     new SqlParameter("@Phone",cell_2.StringCellValue)); 95             } 96             Console.WriteLine("Inset Done!"); 97         } 98         static void Main(string[] args) 99         {100            101             Export_toxlsx();102             Import_toDb();103             Console.ReadKey();104         }105 106     }

 

转载于:https://www.cnblogs.com/caojiannan/p/7571296.html

你可能感兴趣的文章
Luogu P1195 口袋的天空
查看>>
linux + qt 环境搭建
查看>>
Linux基础--03--磁盘分区、挂载
查看>>
Java 中常用的类:包括基本类型的包装类、Date 类、SimpleDateFormat 类、 Calendar 类、 Math 类...
查看>>
爬虫框架Scrapy之CrawlSpiders
查看>>
SoapUI:入门实例
查看>>
JAVA NIO 中的 zerocopy 技术提高IO性能
查看>>
图片懒加载
查看>>
PHP去掉转义后字符串中的反斜杠\函数stripslashes
查看>>
创建一个maven项目
查看>>
CSS制作流程及标准
查看>>
CSS盒子的浮动
查看>>
字典:NSDictionary的应用举例
查看>>
update中加入select
查看>>
批量执行SQL文件
查看>>
13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。...
查看>>
1月21号 UITabBarController
查看>>
RegExp正则表达式内容
查看>>
centos6.5安装redis4.0
查看>>
Spring核心概念之AOP
查看>>