zoukankan      html  css  js  c++  java
  • NPOI导出数据,设置格式,锁定单元格

      代码包括:

           1:导出多个sheet    2:设置单元格格式   3:合并单元格   4:下拉框选项   5:输入数字限制   6:锁定单元格

     static void Main(string[] args)
            {
               
                //hssf表示2003   xssf表示2007  两者之间有的功能是一样的,比如设置列宽,锁定单元格
                //有的功能是不一样的,具体情况具体对待
    
                //实例化一个操作excel工作薄的对象
                IWorkbook workbook = new HSSFWorkbook();
                //创建表
                ISheet sheet1 = workbook.CreateSheet("sheet1");
                //创建行(一行一行的创建,参数代表第几行,不能相同,会覆盖)
                IRow row1 = sheet1.CreateRow(0);
                //创建单元格(一个一个的创建,参数代表第几个,不能相同,会覆盖)
                ICell cell1 = row1.CreateCell(0);
                //设置值
                cell1.SetCellValue("大家好");
                //设置格式
                ICell cell2 = row1.CreateCell(1);
                cell1.SetCellValue("hahah");
                SetCellStyle((HSSFWorkbook)workbook, cell1);
                //合并单元格
                MergeCell(sheet1, 0, 0, 1, 4);
                sheet1.SetColumnWidth(0, 20 * 256);
                sheet1.SetColumnWidth(1, 25 * 256);
                
    
    
                //创建另一个sheet
                ISheet sheet2 = workbook.CreateSheet("sheet2");
                SetCellDropdownlist(sheet2);//下拉列表
                SetCellInputNumber(sheet2);//只能输入数字
    
    
    
    
                //锁定sheet
                ISheet sheet3 = workbook.CreateSheet("sheet3");
    
                //设置密码,锁定表(只要设定就会锁定整个sheet)
                sheet3.ProtectSheet("123456");
                IRow row3 = sheet3.CreateRow(0);
                ICell c1 = row3.CreateCell(0);
    
                ICell c2 = row3.CreateCell(1);
    
    
                //不锁定
                HSSFCellStyle unlocked = (HSSFCellStyle)workbook.CreateCellStyle();
                unlocked.IsLocked = false;
    
                //锁定
                HSSFCellStyle locked = (HSSFCellStyle)workbook.CreateCellStyle();
                locked.IsLocked = true;
    
                c1.SetCellValue("未锁定");
                c1.CellStyle = unlocked;
    
                //其实这个设置不设置都一样的,只要加密就是锁定整个sheet
                c2.SetCellValue("锁定");
                c2.CellStyle = locked;
    
                using (Stream stream = File.OpenWrite(@"D:	est2.xls"))
                {
                    //进行保存
                    workbook.Write(stream);
                }
                Console.WriteLine("成功");
                Console.ReadKey();
    
            }
    
    
    
    
    
            /// <summary>
            /// 设置单元格为下拉框并限制输入值
            /// </summary>
            /// <param name="sheet"></param>
            private static void SetCellDropdownlist(ISheet sheet)
            {
                //设置生成下拉框的行和列(开始行,结束行,开始列,结束列)
                var cellRegions = new CellRangeAddressList(0, 20, 0, 0);
    
                //设置 下拉框内容
                DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(
                    new string[] { "itemA", "itemB", "itemC" });
    
                //绑定下拉框和作用区域,并设置错误提示信息
                HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);
                dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。");
                dataValidate.ShowPromptBox = true;
    
                sheet.AddValidationData(dataValidate);
            }
    
    
            /// <summary>
            /// 设置单元格只能输入数字
            /// </summary>
            /// <param name="sheet"></param>
            private static void SetCellInputNumber(ISheet sheet)
            {
                //设置生成下拉框的行和列
                var cellRegions = new CellRangeAddressList(0, 10, 1, 1);
    
                //第二个参数int comparisonOperator  参考源码获取
                //https://github.com/tonyqus/npoi
                //NPOITest项目
                DVConstraint constraint = DVConstraint.CreateNumericConstraint(
                    ValidationType.INTEGER, OperatorType.BETWEEN, "0", "10");
    
                HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);
                dataValidate.CreateErrorBox("输入不合法", "请输入1~10的数字。");
                //dataValidate.PromptBoxTitle = "ErrorInput";
    
                sheet.AddValidationData(dataValidate);
            }
    
    
    
            /// <summary>
            /// 合并单元格
            /// </summary>
            /// <param name="sheet"></param>
            /// <param name="firstRow"></param>
            /// <param name="lastRow"></param>
            /// <param name="firstCell"></param>
            /// <param name="lastCell"></param>
            private static void MergeCell(ISheet sheet, int firstRow, int lastRow, int firstCell, int lastCell)
            {
                sheet.AddMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCell, lastCell));//2.0使用 2.0以下为Region
            }
    
    
    
            /// <summary>
            /// 设置单元格样式
            /// </summary>
            /// <param name="workbook"></param>
            /// <param name="cell"></param>
            private static void SetCellStyle(HSSFWorkbook workbook, ICell cell)
            {
                HSSFCellStyle fCellStyle = (HSSFCellStyle)workbook.CreateCellStyle();
                HSSFFont ffont = (HSSFFont)workbook.CreateFont();
                ffont.FontHeight = 20 * 20;
                ffont.FontName = "宋体";
                ffont.Color = HSSFColor.RED.index;
    
                //2007中直接设置就好
                //ffont.Color = 2;
                fCellStyle.SetFont(ffont);
    
                fCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;//垂直对齐
                fCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;//水平对齐
                cell.CellStyle = fCellStyle;
            }
    

    参考

    http://www.docin.com/p-1151996737.html?qq-pf-to=pcqq.c2c
    http://www.cnblogs.com/gossip/p/4307486.html

  • 相关阅读:
    自我介绍
    注册表代码
    圣杯布局
    css的颜色设置
    c语言:第二次作业,循环结构
    c语言:第一次作业,分支,顺序结构
    C语言博客作业03函数
    第零次作业
    用JSP判断输入是质数还是非质数
    用JSP完成输入整形,单精度浮点数,双精度浮点数
  • 原文地址:https://www.cnblogs.com/zxking/p/6250421.html
Copyright © 2011-2022 走看看