NPOI基础入门(旧版本)

1.常用的类与方法

工作本HSSFWorkbook

构造方法,无参表示创建一个新的工作本,可以接收一个流用于打开一个现有的工作本
方法CreateSheet(索引):创建指定索引的sheet对象
方法GetSheetAt(索引):根据索引获取sheet对象
方法CreateCellStyle():创建单元格样式对象
方法CreateFont():创建字体对象
方法Write(stream):将工作本输出到流中
工作表HSSFSheet
方法CreateRow(索引):创建指定索引的行
方法GetRow(索引):根据索引获取行
方法AddMergedRegion():设置合并区域,参数包括开始行索引、开始列索引、结束行索引、结束列索引
方法SetColumnWidth(索引,宽度):设置指定列的宽度,单位是一个字符宽度的256分之1
说明:一个汉字占用两个字符
属性FirstRowNum、LastRowNum:获取第一行、最后一行的索引值
行HSSFRow
方法CreateCell(索引):创建指定索引的行
方法GetCell(索引):根据索引获取单元格
属性HeightInPoints:指定或设置高度
单元格HSSFCell
方法SetCellValue():设置单元格中的值
属性***CellValue:获取单元格中指定类型的值,如果类型不匹配则抛异常
属性CellStyle:获取或设置单元格样式
单元格样式HSSFCellStyle
方法SetFont(字体对象):设置字体样式
属性Alignment:水平对齐,1左,2中,3右
字体对象HSSFFont
属性FontHeightInPoints:获取或设置字体大小

属性Boldweight:获取或设置字体加粗


2.导出和导入excel实例

namespace WindowsFormsApplication1
{
    public partial class NPOITest : Form
    {
        public NPOITest()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ManagerInfoBLL mibBll=new ManagerInfoBLL();
            var list=mibBll.GetList();
            dataGridView1.DataSource = list;


            //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 ceelTitle0 = rowTitle.CreateCell(0);
            ceelTitle0.SetCellValue("编号");
            ceelTitle0.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==0?"员工":"经理");

            }


            //保存工作本
            FileStream stream=new FileStream(@"C:UsersLWP1398Desktop 1.xlx",FileMode.Create);
            workbook.Write(stream);
            stream.Close();
            stream.Dispose();
        }


        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:UsersLWP1398Desktop 1.xlx", 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=Convert.ToInt32(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;
        }


        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 3)
            {
                e.Value = Convert.ToInt32(e.Value) == 0 ? "员工" : "经理";
            }
        }
    }
}





原文地址:https://www.cnblogs.com/CSharpLover/p/5193668.html