zoukankan      html  css  js  c++  java
  • NPOI操作excel

    一、首先引用NPOI用到的dll文件,有点多,但是都需要引用。

     

     相关dll文件可以加群582260284获取。

    二、具体实现代码如下

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using CaterBll;
    using CaterModel;
    using NPOI.HSSF.UserModel;
    using NPOI.HSSF.Util;
    
    namespace CaterUI.test
    {
        public partial class NPOITest : Form
        {
            public NPOITest()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 导出excel
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                //查询数据,显示到表格上
                ManagerInfoBll miBll=new ManagerInfoBll();
                var list = miBll.GetList();
                dataGridView1.DataSource = list;
    
                //进行excel生成创建操作
                //1、创建workbook,不指定参数,表示创建一个新的工作本
                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;
    
                //8、遍历集合,创建正文数据
                //8.1遍历集合
                int rowIndex = 2;
                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);
                    cellData3.SetCellValue(mi.MType==1?"经理":"店员");
                }
    
                //保存工作本
                FileStream stream = new FileStream(@"C:Usersq1Desktop	1.xls",FileMode.Create);
                workbook.Write(stream);
                stream.Close();
                stream.Dispose();
            }
            /// <summary>
            /// 导入excel
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button2_Click(object sender, EventArgs e)
            {
                //1、读取excel数据,存入list中
                List<ManagerInfo> list=new List<ManagerInfo>();
                //1.1读取文件
                using (FileStream stream = new FileStream(@"C:Usersq1Desktop	1.xls",FileMode.Open))
                {
                    //1.2创建workbook
                    HSSFWorkbook workbook=new HSSFWorkbook(stream);
                    //1.3读取sheet
                    HSSFSheet sheet = workbook.GetSheetAt(0);
                    //1.4读取正文数据,因为0、1行为标题,直接路过
                    int rowIndex = 2;
                    HSSFRow row = sheet.GetRow(rowIndex++);
                    while (row!=null)
                    {
                        //读到数据时返回行对象,如果没有读到则返回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;
            }
        }
    }
  • 相关阅读:
    [算法]统计排序(桶排序)
    [算法]使用bitmap高效进行矩阵运算
    [C++]搞清楚类中构造与析构的顺序
    [C++]关于友元的总结
    [mysql]视图(转)
    [mysql]存储过程(转)
    [C++]对象模型总结
    [mysql]Linux下C语言连接mysql
    [python]使用xml.dom读写XML文件
    Windows 10 64位操作系统 下安装、配置、启动、登录、连接测试oracle 11g
  • 原文地址:https://www.cnblogs.com/wangjinya/p/11539763.html
Copyright © 2011-2022 走看看