C#通过NPOI导入导出数据EXCEL
作者:liuweiqiang11188 发布时间:2023-01-27 14:24:08
标签:C#,NPOI,excel
本文实例为大家分享了C#通过NPOI导入导出数据EXCEL的具体代码,供大家参考,具体内容如下
其实从数据库到服务器导入导出有很多方法,但是比较简单的有NPOI这个方法
准备工作,先增加到相应的lib,同时引用相关的dll
第一从数据库导出数据到Excel里面
首先我设置一个win窗体
第二步写代码
private void button1_Click(object sender, EventArgs e)
{
//查询数据,显示到表格上
ManagerInfoBll miBll = new ManagerInfoBll();
var list = miBll.GetList();
dataGridView1.DataSource = list;
//进行excel 生成创建操作
//1 创建workboook ,不指定参数,表示创建一个新的工作本
HSSFWorkbook workbook = new HSSFWorkbook();
//2创建sheet
HSSFSheet sheet = workbook.CreateSheet("管理员");
//3创建row
HSSFRow row = sheet.CreateRow(0);
//4创建cell
HSSFCell cell0 = row.CreateCell(0);
cell0.SetCellValue("管理员表");
//5设置合并单元格
sheet.AddMergedRegion(new NPOI.HSSF.Util.Region(0, 0, 0, 3));
//6设置居中
HSSFCellStyle styleTitle = workbook.CreateCellStyle();
styleTitle.Alignment = 2;
cell0.CellStyle = styleTitle;
//6.1设置字体
HSSFFont fontTitle = workbook.CreateFont();
fontTitle.FontHeightInPoints = 14;
styleTitle.SetFont(fontTitle);
//7创建标题行
//7.1创建行
HSSFRow rowTitle = sheet.CreateRow(1);
//7.2创建单元格
HSSFCell cellTitle0 = rowTitle.CreateCell(0);
cellTitle0.SetCellValue("编号");
cellTitle0.CellStyle = styleTitle;
HSSFCell cellTitle1 = rowTitle.CreateCell(1);
cellTitle1.SetCellValue("姓名");
cellTitle1.CellStyle = styleTitle;
HSSFCell cellTitle2 = rowTitle.CreateCell(2);
cellTitle2.SetCellValue("密码");
cellTitle2.CellStyle = styleTitle;
HSSFCell cellTitle3 = rowTitle.CreateCell(3);
cellTitle3.SetCellValue("类型");
cellTitle3.CellStyle = styleTitle;
int rowIndex = 2;
//8.1遍历集合
foreach (var mi in list)
{//8.2创建行
HSSFRow rowData = sheet.CreateRow(rowIndex++);
//8.3创建单元格
HSSFCell cellData0 = rowData.CreateCell(0);
cellData0.SetCellValue(mi.MId);
HSSFCell cellData1 = rowData.CreateCell(1);
cellData1.SetCellValue(mi.MName);
HSSFCell cellData2 = rowData.CreateCell(2);
cellData2.SetCellValue(mi.MPwd);
HSSFCell cellData3 = rowData.CreateCell(3);
cellData0.SetCellValue(mi.MType==1?"经理":"店员");
}
//8 保持文本
FileStream stream = new FileStream("", FileMode.Create);
workbook.Write(stream);//
stream.Close();
stream.Dispose();
}
最后效果
第二从Excel导入到数据库中
private void button2_Click(object sender, EventArgs e)
{
//1读取excel 数据,存入list
List<ManagerInfo> list = new List<ManagerInfo>();
//1.1读取文件 路径
using (FileStream stream= new FileStream("",FileMode.Open))
{
//1.2创建workbook
HSSFWorkbook workbook = new HSSFWorkbook(stream);
//1.3读取sheet
HSSFSheet sheet = workbook.GetSheetAt(0);
//1.4读取正文数据主要从表格开始看起 第三行开始
int rowindex = 2;
HSSFRow row = sheet.GetRow(10);
while ( row==null)
{
//1.5读到数据返回行对象
ManagerInfo mi = new ManagerInfo();
mi.MId = (int)row.GetCell(0).NumericCellValue;
mi.MName = row.GetCell(1).StringCellValue;
mi.MPwd = row.GetCell(2).StringCellValue;
mi.MType=row.GetCell(3).StringCellValue=="经理"?1 : 0;
list.Add(mi);
row = sheet.GetRow(rowindex++);
}
}
//2将list赋值给dataGridview
dataGridView1.DataSource = list;
}
来源:https://blog.csdn.net/liuweiqiang11188/article/details/72082019


猜你喜欢
- MyBatis 别名typeAliases的设置第一种:通过在配置文件中typeAlias节点设置type的方式<?xml versi
- 1.类加载<1>.父子类执行的顺序1.父类的静态变量和静态代码块(书写顺序)2.子类的静态变量和静态代码块(书写顺序)3.父类的
- 本文以实例形式展示了C#与js实现去除textbox文本框里面重复记录的方法!具体方法如下:现有如下问题:页面有一个textbox文本框(是
- 题目描述给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用。如果你只有10MB的内存呢?解
- Spring定时任务无故停止又不报错一开始是使用Spring自带的定时器来配置定时任务的,简单快捷,配置如下:<bean id=&qu
- 简介常见的4种使用线程的方法:1实现 Runnable 接口;2实现 Callable 接口;3继承 Thread 类。4匿名内部类的写法。
- 虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出的风险。 一、为什么要了解内存泄露和内存溢出?1、内存泄
- 前言对于Java程序员,可以说对于ArrayList和LinkedList可谓是十分熟悉了对于ArrayList和LinkedList,他们
- 太多的if-else不太直观,难以维护。 以下面代码为例,展示几种替代if else的方法。String input = &quo
- java编码中经常用到代理,代理分为静态代理和 * 。其中 * 可以实现spring中的aop。一、静态代理:程序运行之前,程序员就要编
- @RequestBody的作用@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送
- 1.封装什么是封装,谈谈自己对封装的理解,封装就是将类的信息(比如说类的属性)隐藏在类的内部,不允许外部程序直接访问。此时就要提到一个关键字
- RecyclerView是Android 5.0新增的控件,在android-support-v7下面。官方文档对RecycleView介绍
- 泛型的概述和优势泛型概述泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。泛型的格式:<数据类型>;
- 随着目前微信越来越火,所以研究微信的人也就越来越多,这不前一段时间,我们公司就让我做一个微信公众号中问卷调查发红包功能,经过一段时间的研究,
- 刚开始我以为熔断和降级是一体的,以为他们必须配合使用; 只不过名字不一样而已,但是当我经过思考过后,发现他们其实不是一个东西;降级什么是服务
- 在项目中为了友好化,对于错误页面,我们常常会使用自定义的页面。SSM框架组合时代,我们通常通过拦截或者在web.xml中设置对于错误码的错误
- 1. 前言最近要实现一个小需求,涵盖了很多知识点,比如手势、动画、布局等。挺有意思的,写出来和大家分享一下。如下所示,分为上下两层;当左右滑
- 一、项目简述功能包括: 前台+后台健身房管理系统,用户预订,教练选择。课程选 择,登录,后台管理等等。二、项目运行环境配置: Jdk1.8
- 持久化类Hibernate的整个概念是采取从Java类属性的值,并将持久到数据库表。一个映射文件Hibernate的帮助确定如何从拉动类的值