• 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 ? "员工" : "经理";
                }
            }
        }
    }





  • 相关阅读:
    POJ2762 Going from u to v or from v to u?
    POJ3422或洛谷2045 Kaka's Matrix Travels
    LaTeX数学公式大全
    POJ1966 Cable TV Network
    转:Android中的Handler的机制与用法详解
    Httpservlet cannot be resolved to a type的原因与解决方法
    Textchangedlistener的用法
    contextMenu的使用
    转:android studio 一直卡在Gradle:Build Running的解决办法
    Sqlite操作的一些关键类的官方说明与Intent的startactivityforresult方法
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193668.html
Copyright © 2020-2023  润新知