Beispiel #1
0
        public static void SetDropDownList(this HSSFSheet sheet, string[] datas, HSSFWorkbook workbook,
                                           CellRangeAddressList addressList, string formulaName)
        {
            var    hiddenSheetName = "HiddenDataSource" + DateTime.Now.ToString("yyyyMMddHHmmss");
            ISheet CourseSheet     = workbook.CreateSheet(hiddenSheetName);

            workbook.SetSheetHidden(workbook.GetSheetIndex(hiddenSheetName), true);
            //CourseSheet.CreateRow(0).CreateCell(0).SetCellValue("");
            IRow  row  = null;
            ICell cell = null;

            for (int i = 0; i < datas.Length; i++)
            {
                row  = CourseSheet.CreateRow(i);
                cell = row.CreateCell(0);
                cell.SetCellValue(datas[i]);
            }

            IName range = workbook.CreateName();

            range.RefersToFormula = string.Format("{0}!$A$1:$A${1}", hiddenSheetName, datas.Length);
            range.NameName        = formulaName;
            DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint(formulaName);
            HSSFDataValidation dataValidate = new HSSFDataValidation(addressList, constraint);

            sheet.AddValidationData(dataValidate);
        }
Beispiel #2
0
        public void TestGetDataValidationsFormula()
        {
            HSSFWorkbook           wb    = new HSSFWorkbook();
            HSSFSheet              sheet = wb.CreateSheet() as HSSFSheet;
            List <IDataValidation> list  = sheet.GetDataValidations();

            Assert.AreEqual(0, list.Count);

            IDataValidationHelper     dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint           = dataValidationHelper.CreateCustomConstraint("A2:A3");
            CellRangeAddressList      AddressList          = new CellRangeAddressList(0, 0, 0, 0);
            IDataValidation           validation           = dataValidationHelper.CreateValidation(constraint, AddressList);

            sheet.AddValidationData(validation);

            list = sheet.GetDataValidations(); // <-- works
            Assert.AreEqual(1, list.Count);

            HSSFDataValidation dv = list[(0)] as HSSFDataValidation;
            DVConstraint       c  = dv.Constraint;

            Assert.AreEqual(ValidationType.FORMULA, c.GetValidationType());
            Assert.AreEqual("A2:A3", c.Formula1);
            Assert.AreEqual(null, c.Formula2);
            Assert.AreEqual(double.NaN, c.Value1);
            Assert.AreEqual(double.NaN, c.Value2);
        }
        public void TestGetDataValidationsDate()
        {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.CreateSheet() as HSSFSheet;
            List<IDataValidation> list = sheet.GetDataValidations();
            Assert.AreEqual(0, list.Count);

            IDataValidationHelper dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint = dataValidationHelper.CreateDateConstraint(OperatorType.EQUAL,
                    "2014/10/25", null, null);
            CellRangeAddressList AddressList = new CellRangeAddressList(0, 0, 0, 0);
            IDataValidation validation = dataValidationHelper.CreateValidation(constraint, AddressList);
            sheet.AddValidationData(validation);

            list = sheet.GetDataValidations(); // <-- works
            Assert.AreEqual(1, list.Count);

            HSSFDataValidation dv = list[(0)] as HSSFDataValidation;
            DVConstraint c = dv.Constraint;
            Assert.AreEqual(ValidationType.DATE, c.GetValidationType());
            Assert.AreEqual(OperatorType.EQUAL, c.Operator);
            Assert.AreEqual(null, c.Formula1);
            Assert.AreEqual(null, c.Formula2);
            Assert.AreEqual(DateUtil.GetExcelDate(DateUtil.ParseYYYYMMDDDate("2014/10/25")), c.Value1);
            Assert.AreEqual(double.NaN, c.Value2);
        }
        public void TestGetDataValidationsDecimal(){
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.CreateSheet() as HSSFSheet;
        List<IDataValidation> list = sheet.GetDataValidations();
        Assert.AreEqual(0, list.Count);

        IDataValidationHelper dataValidationHelper = sheet.GetDataValidationHelper();
        IDataValidationConstraint constraint = dataValidationHelper.CreateDecimalConstraint(OperatorType.BETWEEN, "=A2",
                "200");
        CellRangeAddressList AddressList = new CellRangeAddressList(0, 0, 0, 0);
        IDataValidation validation = dataValidationHelper.CreateValidation(constraint, AddressList);
        sheet.AddValidationData(validation);

        list = sheet.GetDataValidations(); // <-- works
        Assert.AreEqual(1, list.Count);

        HSSFDataValidation dv = list[(0)] as HSSFDataValidation;
        DVConstraint c = dv.Constraint;
        Assert.AreEqual(ValidationType.DECIMAL, c.GetValidationType());
        Assert.AreEqual(OperatorType.BETWEEN, c.Operator);
        Assert.AreEqual("A2", c.Formula1);
        Assert.AreEqual(null, c.Formula2);
        Assert.AreEqual(double.NaN, c.Value1);
        Assert.AreEqual(200, c.Value2);
    }
        public void TestGetDataValidationsListExplicit()
        {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.CreateSheet() as HSSFSheet;
            List<IDataValidation> list = sheet.GetDataValidations();
            Assert.AreEqual(0, list.Count);

            IDataValidationHelper dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint = dataValidationHelper.CreateExplicitListConstraint(new String[] { "aaa",
                "bbb", "ccc" });
            CellRangeAddressList AddressList = new CellRangeAddressList(0, 0, 0, 0);
            IDataValidation validation = dataValidationHelper.CreateValidation(constraint, AddressList);
            validation.SuppressDropDownArrow = (/*setter*/true);
            sheet.AddValidationData(validation);

            list = sheet.GetDataValidations(); // <-- works
            Assert.AreEqual(1, list.Count);

            HSSFDataValidation dv = list[(0)] as HSSFDataValidation;
            Assert.AreEqual(true, dv.SuppressDropDownArrow);

            DVConstraint c = dv.Constraint;
            Assert.AreEqual(ValidationType.LIST, c.GetValidationType());
            Assert.AreEqual(null, c.Formula1);
            Assert.AreEqual(null, c.Formula2);
            Assert.AreEqual(double.NaN, c.Value1);
            Assert.AreEqual(double.NaN, c.Value2);
            String[] values = c.ExplicitListValues;
            Assert.AreEqual(3, values.Length);
            Assert.AreEqual("aaa", values[0]);
            Assert.AreEqual("bbb", values[1]);
            Assert.AreEqual("ccc", values[2]);
        }
Beispiel #6
0
            private void AddValidationInternal(int operatorType, String firstFormula,
                                               String secondFormula, HSSFDataValidation.ERRORSTYLE errorStyle, String ruleDescr, String promptDescr,
                                               bool allowEmpty, bool inputBox, bool errorBox, bool suppressDropDown,
                                               String[] explicitListValues)
            {
                int rowNum = _currentRowIndex++;

                DVConstraint dc = CreateConstraint(operatorType, firstFormula, secondFormula, explicitListValues);

                HSSFDataValidation dv = new HSSFDataValidation(new CellRangeAddressList(rowNum, rowNum, 0, 0), dc);

                dv.EmptyCellAllowed = (allowEmpty);
                dv.ErrorStyle       = (errorStyle);
                dv.CreateErrorBox("Invalid Input", "Something is wrong - Check condition!");
                dv.CreatePromptBox("Validated Cell", "Allowable values have been restricted");

                dv.ShowPromptBox         = (inputBox);
                dv.ShowErrorBox          = (errorBox);
                dv.SuppressDropDownArrow = (suppressDropDown);


                _sheet.AddValidationData(dv);
                WriteDataValidationSettings(_sheet, _style_1, _style_2, ruleDescr, allowEmpty,
                                            inputBox, errorBox);
                if (_cellStyle != null)
                {
                    Row  row  = _sheet.GetRow(_sheet.PhysicalNumberOfRows - 1);
                    Cell cell = row.CreateCell(0);
                    cell.CellStyle = (_cellStyle);
                }
                WriteOtherSettings(_sheet, _style_1, promptDescr);
            }
        public void TestGetDataValidationsListFormula()
        {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.CreateSheet() as HSSFSheet;
            List<IDataValidation> list = sheet.GetDataValidations();
            Assert.AreEqual(0, list.Count);

            IDataValidationHelper dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint = dataValidationHelper.CreateFormulaListConstraint("A2");
            CellRangeAddressList AddressList = new CellRangeAddressList(0, 0, 0, 0);
            IDataValidation validation = dataValidationHelper.CreateValidation(constraint, AddressList);
            validation.SuppressDropDownArrow = (/*setter*/true);
            sheet.AddValidationData(validation);

            list = sheet.GetDataValidations(); // <-- works
            Assert.AreEqual(1, list.Count);

            HSSFDataValidation dv = list[(0)] as HSSFDataValidation;
            Assert.AreEqual(true, dv.SuppressDropDownArrow);

            DVConstraint c = dv.Constraint;
            Assert.AreEqual(ValidationType.LIST, c.GetValidationType());
            Assert.AreEqual("A2", c.Formula1);
            Assert.AreEqual(null, c.Formula2);
            Assert.AreEqual(double.NaN, c.Value1);
            Assert.AreEqual(double.NaN, c.Value2);
        }
Beispiel #8
0
        //public static void test1()
        //{
        //    HSSFWorkbook hssfworkbook = new HSSFWorkbook();
        //    HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
        //    CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);
        //    DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] { "itemA", "itemB", "itemC" });
        //    HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
        //    sheet1.AddValidationData(dataValidate);
        //    MemoryStream ms = new MemoryStream();
        //    hssfworkbook.Write(ms);
        //    string workbookFile = @"D:\\wulei22.xls";
        //    hssfworkbook = null;
        //    FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);
        //    byte[] data = ms.ToArray();
        //    fs.Write(data, 0, data.Length);
        //    fs.Flush();
        //    fs.Close();
        //}

        public static void setdownlist()
        {
            //创建工作簿
            HSSFWorkbook ssfworkbook = new HSSFWorkbook();
            //创建工作表(页)
            HSSFSheet sheet1 = ssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
            //创建一行
            HSSFRow headerRow = (HSSFRow)sheet1.CreateRow(0);

            //设置表头
            headerRow.CreateCell(0).SetCellValue("ID");
            //设置表头的宽度
            sheet1.SetColumnWidth(0, 15 * 256);
            #region     添加显示下拉列表
            HSSFSheet sheet2 = ssfworkbook.CreateSheet("ShtDictionary") as HSSFSheet;
            ssfworkbook.SetSheetHidden(1, true);                     //隐藏
            sheet2.CreateRow(0).CreateCell(0).SetCellValue("itemA"); //列数据
            sheet2.CreateRow(1).CreateCell(0).SetCellValue("itemB");
            sheet2.CreateRow(2).CreateCell(0).SetCellValue("itemC");
            HSSFName range = ssfworkbook.CreateName() as HSSFName;//创建名称
            // range.Reference = "ShtDictionary!$A$1:$A$3";//格式
            range.NameName = "dicRange";
            #endregion
            headerRow.CreateCell(1).SetCellValue("Selected");
            sheet1.SetColumnWidth(1, 15 * 256);
            //将下拉列表添加
            CellRangeAddressList regions      = new CellRangeAddressList(1, 65535, 1, 1);
            DVConstraint         constraint   = DVConstraint.CreateFormulaListConstraint("dicRange");
            HSSFDataValidation   dataValidate = new HSSFDataValidation(regions, constraint);
            sheet1.AddValidationData(dataValidate);

            headerRow.CreateCell(2).SetCellValue("VALUE");
            sheet1.SetColumnWidth(2, 15 * 256);

            //写入数据
            //创建数据行
            HSSFRow dataRow = (HSSFRow)sheet1.CreateRow(1);
            //填充数据
            dataRow.CreateCell(0).SetCellValue("1"); //id
            dataRow.CreateCell(1).SetCellValue("");  //选择框
            dataRow.CreateCell(2).SetCellValue("值"); //选择框
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            ssfworkbook.Write(ms);
            string filename     = "Sheet1" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".xls";
            object Response     = null;
            string workbookFile = @"D:\\wulei.xls";

            FileStream fs   = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);
            byte[]     data = ms.ToArray();
            fs.Write(data, 0, data.Length);
            fs.Flush();
            fs.Close();
            //Response.AddHeader("Content-Disposition", string.Format("attachment; filename=" + filename + ""));
            //Response.BinaryWrite(ms.ToArray());
            ms.Close();
            ms.Dispose();
        }
Beispiel #9
0
        /// <summary>
        /// EXCEL2003下拉值
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="data"></param>
        /// <param name="StarCol"></param>
        /// <param name="EndCol"></param>
        private static void CreateDropDwonListForXLS(HSSFSheet sheet, List <string> data, int StarCol, int EndCol)
        {
            HSSFDataValidationHelper Validation  = new HSSFDataValidationHelper(sheet);
            DVConstraint             Constraint  = (DVConstraint)Validation.CreateExplicitListConstraint(data.ToArray());
            CellRangeAddressList     AddressList = new CellRangeAddressList(1, 65535, StarCol, EndCol);
            var HSSF = Validation.CreateValidation(Constraint, AddressList);

            sheet.AddValidationData(HSSF);
        }
Beispiel #10
0
        /// <summary>
        /// 引用另一个工作表的形式 得到下拉
        /// </summary>
        /// <param name="book"></param>
        /// <param name="columnIndex"></param>
        /// <param name="values"></param>
        /// <param name="sheetName"></param>
        /// <returns></returns>
        public static void CreateListConstaint(this HSSFWorkbook book, Int32 columnIndex, IEnumerable <String> values, string sheetName = "")
        {
            if (values == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(sheetName))
            {
                sheetName = "_constraintSheet_";
            }
            //创建下拉数据到新表中
            ISheet sheet          = book.GetSheet(sheetName) ?? book.CreateSheet(sheetName);;
            var    firstRow       = sheet.GetRow(0);
            var    conColumnIndex = firstRow == null ? 0 : firstRow.PhysicalNumberOfCells;
            var    rowIndex       = 0;
            var    lastValue      = string.Empty;

            foreach (var value in values)
            {
                var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
                row.CreateCell(conColumnIndex).SetCellValue(value);
                rowIndex++;
                lastValue = value;
            }

            //如果无可选值的话,则增加一个空选项,防止用户填写内容
            if (values.Count() == 0)
            {
                var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
                row.CreateCell(conColumnIndex).SetCellValue("    ");
                rowIndex++;
            }

            //给该列所有单元格加上下拉选择
            IName range = book.CreateName();

            range.RefersToFormula = String.Format("{2}!${0}$1:${0}${1}",
                                                  (Char)('A' + conColumnIndex),
                                                  rowIndex.ToString(), sheetName);
            string rangeName = "dicRange" + columnIndex;

            range.NameName = rangeName;
            var cellRegions = new CellRangeAddressList(1, 65535, columnIndex, columnIndex);
            var constraint  = DVConstraint.CreateFormulaListConstraint(rangeName);

            book.SetSheetHidden(book.GetSheetIndex(sheet), SheetState.HIDDEN);

            //创建验证
            HSSFDataValidation valid = new HSSFDataValidation(cellRegions, constraint);

            //关联验证
            HSSFSheet v = book.GetSheetAt(0) as HSSFSheet;

            v.AddValidationData(valid);
        }
Beispiel #11
0
        public void TestGetDataValidationsAny()
        {
            HSSFWorkbook           wb    = new HSSFWorkbook();
            HSSFSheet              sheet = wb.CreateSheet() as HSSFSheet;
            List <IDataValidation> list  = sheet.GetDataValidations();

            Assert.AreEqual(0, list.Count);

            IDataValidationHelper     dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint           = dataValidationHelper.CreateNumericConstraint(ValidationType.ANY,
                                                                                                          OperatorType.IGNORED, null, null);
            CellRangeAddressList AddressList = new CellRangeAddressList(1, 2, 3, 4);
            IDataValidation      validation  = dataValidationHelper.CreateValidation(constraint, AddressList);

            validation.EmptyCellAllowed = (/*setter*/ true);
            validation.CreateErrorBox("error-title", "error-text");
            validation.CreatePromptBox("prompt-title", "prompt-text");
            sheet.AddValidationData(validation);

            list = sheet.GetDataValidations(); // <-- works
            Assert.AreEqual(1, list.Count);

            HSSFDataValidation dv = list[(0)] as HSSFDataValidation;

            {
                CellRangeAddressList regions = dv.Regions;
                Assert.AreEqual(1, regions.CountRanges());

                CellRangeAddress Address = regions.GetCellRangeAddress(0);
                Assert.AreEqual(1, Address.FirstRow);
                Assert.AreEqual(2, Address.LastRow);
                Assert.AreEqual(3, Address.FirstColumn);
                Assert.AreEqual(4, Address.LastColumn);
            }
            Assert.AreEqual(true, dv.EmptyCellAllowed);
            Assert.AreEqual(false, dv.SuppressDropDownArrow);
            Assert.AreEqual(true, dv.ShowErrorBox);
            Assert.AreEqual("error-title", dv.ErrorBoxTitle);
            Assert.AreEqual("error-text", dv.ErrorBoxText);
            Assert.AreEqual(true, dv.ShowPromptBox);
            Assert.AreEqual("prompt-title", dv.PromptBoxTitle);
            Assert.AreEqual("prompt-text", dv.PromptBoxText);

            IDataValidationConstraint c = dv.ValidationConstraint;

            Assert.AreEqual(ValidationType.ANY, c.GetValidationType());
            Assert.AreEqual(OperatorType.IGNORED, c.Operator);
        }
Beispiel #12
0
        public void CreateDataValidation(string filePath, int sheetIndex, decimal fromNumber, decimal toNumber, int fromRow, int fromColumn, int toRow, int toColumn)
        {
            FileStream   file         = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
            HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);

            if (hssfworkbook != null)
            {
                CellRangeAddressList rangeList      = new CellRangeAddressList(fromRow - 1, toRow - 1, fromColumn - 1, toColumn - 1); // Vì NPOI sử dụng row và column bắt đầu từ 0
                DVConstraint         dvconstraint   = DVConstraint.CreateNumericConstraint(2, OperatorType.BETWEEN, fromNumber.ToString(), toNumber.ToString());
                HSSFDataValidation   dataValidation = new HSSFDataValidation(rangeList, dvconstraint);
                HSSFSheet            sheet          = (HSSFSheet)hssfworkbook.GetSheetAt(sheetIndex - 1);
                if (sheet != null)
                {
                    sheet.AddValidationData(dataValidation);
                    file = new FileStream(filePath, FileMode.Create);
                    hssfworkbook.Write(file);
                    file.Close();
                }
            }
        }
Beispiel #13
0
        public void CreateDataValidation(string filePath, int sheetIndex, string[] lstContrains, int fromRow, int fromColumn, int toRow, int toColumn)
        {
            FileStream   file         = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
            HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);

            if (hssfworkbook != null)
            {
                CellRangeAddressList rangeList      = new CellRangeAddressList(fromRow - 1, toRow - 1, fromColumn - 1, toColumn - 1); // Vì NPOI sử dụng row và column bắt đầu từ 0
                DVConstraint         dvconstraint   = DVConstraint.CreateExplicitListConstraint(lstContrains);
                HSSFDataValidation   dataValidation = new HSSFDataValidation(rangeList, dvconstraint);
                HSSFSheet            sheet          = (HSSFSheet)hssfworkbook.GetSheetAt(sheetIndex - 1);
                if (sheet != null)
                {
                    sheet.AddValidationData(dataValidation);
                    file = new FileStream(filePath, FileMode.Create);
                    hssfworkbook.Write(file);
                    file.Close();
                }
            }
        }
Beispiel #14
0
        public static void test2()
        {
            HSSFWorkbook         hssfworkbook = new HSSFWorkbook();
            HSSFSheet            sheet1       = hssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
            CellRangeAddressList regions      = new CellRangeAddressList(0, 65535, 0, 0);
            DVConstraint         constraint   = DVConstraint.CreateExplicitListConstraint(new string[] { "itemA111", "itemB22", "itemC33" });
            HSSFDataValidation   dataValidate = new HSSFDataValidation(regions, constraint);

            sheet1.AddValidationData(dataValidate);
            MemoryStream ms = new MemoryStream();

            hssfworkbook.Write(ms);
            string workbookFile = @"D:\\wulei1111.xls";

            hssfworkbook = null;
            FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);

            byte[] data = ms.ToArray();
            fs.Write(data, 0, data.Length);
            fs.Flush();
            fs.Close();
        }
Beispiel #15
0
        public static void test1()
        {
            HSSFWorkbook hssfworkbook = new HSSFWorkbook();
            HSSFSheet    sheet2       = hssfworkbook.CreateSheet("ShtDictionary") as HSSFSheet;

            sheet2.CreateRow(0).CreateCell(0).SetCellValue("itemA");
            sheet2.CreateRow(1).CreateCell(0).SetCellValue("itemB");
            sheet2.CreateRow(2).CreateCell(0).SetCellValue("itemC");


            HSSFName range = hssfworkbook.CreateName() as HSSFName;

            range.RefersToFormula = "ShtDictionary!$A1:$A3";
            range.NameName        = "dicRange";


            HSSFSheet            sheet1  = hssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
            CellRangeAddressList regions = new CellRangeAddressList(0, 65535, 0, 0);

            DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint("dicRange");
            HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);

            sheet1.AddValidationData(dataValidate);
            MemoryStream ms = new MemoryStream();

            hssfworkbook.Write(ms);
            string workbookFile = @"D:\\wulei1.xls";

            hssfworkbook = null;
            FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);

            byte[] data = ms.ToArray();
            fs.Write(data, 0, data.Length);
            fs.Flush();
            fs.Close();
        }
Beispiel #16
0
        /// <summary>
        /// Create data validation
        /// Hungnd 04/04/2013
        /// </summary>
        /// <param name="sheetIndex"></param>
        /// <param name="fromRow"></param>
        /// <param name="fromCol"></param>
        /// <param name="toRow"></param>
        /// <param name="toCol"></param>
        /// <param name="validationType">The value in VTValidationType</param>
        /// <param name="fromValue"></param>
        /// <param name="toValue"></param>
        /// <param name="errorTitle">Default "Error value"</param>
        /// <param name="errorMessage">Default "Error input value"</param>
        /// <param name="errorStyle">Default ErrorStyle.STOP</param>
        /// <param name="lstContrains">Default null</param>
        public void CreateCellValidation(int sheetIndex,
                                         int fromRow, int fromColumn, int toRow, int toColumn,
                                         int validationType, string fromValue, string toValue, string[] lstContrains = null,
                                         string errorTitle = "Error value", string errorMessage = "Error input value",
                                         int errorStyle    = ErrorStyle.STOP
                                         )
        {
            HSSFWorkbook hssfworkbook = new HSSFWorkbook(sfile);

            if (hssfworkbook != null)
            {
                CellRangeAddressList rangeList    = new CellRangeAddressList(fromRow - 1, toRow - 1, fromColumn - 1, toColumn - 1); // Vì NPOI sử dụng row và column bắt đầu từ 0
                DVConstraint         dvconstraint = null;
                if (validationType.Equals(VTValidationType.LIST))
                {
                    dvconstraint = DVConstraint.CreateExplicitListConstraint(lstContrains);
                }
                else
                {
                    dvconstraint = DVConstraint.CreateNumericConstraint(validationType, OperatorType.BETWEEN, fromValue, toValue);
                }
                HSSFDataValidation dataValidation = new HSSFDataValidation(rangeList, dvconstraint);
                if (!validationType.Equals(VTValidationType.LIST))
                {
                    dataValidation.CreateErrorBox(errorTitle, errorMessage);
                    dataValidation.ErrorStyle = errorStyle;
                }
                HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(sheetIndex);
                if (sheet != null)
                {
                    sheet.AddValidationData(dataValidation);
                    sfile = new FileStream(FilePath, FileMode.Create);
                    hssfworkbook.Write(sfile);
                }
            }
        }
Beispiel #17
0
        public static void CreateDropDownList(List <Category> lists, string fatherName, string fileName)
        {
            if (lists.Count > 0)
            {
                HSSFWorkbook         hssfworkbook = new HSSFWorkbook();
                HSSFSheet            sheet1       = hssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
                CellRangeAddressList regions      = new CellRangeAddressList(0, 0, 0, 0);

                HSSFSheet       sheet2      = hssfworkbook.CreateSheet("ShtDictionary") as HSSFSheet;
                List <Category> BigCategory = lists.Where(f => f.FatherName == fatherName).ToList();
                int             row         = 0;
                int             column      = 1;
                HSSFRow         dataRow     = sheet2.CreateRow(row++) as HSSFRow;

                IName range1 = hssfworkbook.CreateName();                //创建名称
                range1.NameName = fatherName;                            //设置名称
                var colName = GetExcelColumnName(BigCategory.Count + 1); //根据序号获取列名,具体代码见下文
                range1.RefersToFormula = string.Format("ShtDictionary!$B1:{0}1", colName);

                foreach (var Category in BigCategory)
                {
                    dataRow.CreateCell(0).SetCellValue(fatherName);
                    dataRow.CreateCell(column++).SetCellValue(Category.Name);
                    HSSFRow childrenrow = sheet2.CreateRow(row++) as HSSFRow;
                    childrenrow.CreateCell(0).SetCellValue(Category.Name);
                    List <Category> childrenCategory = lists.Where(f => f.FatherName == Category.Name).ToList();
                    int             childcolumn      = 1;
                    if (childrenCategory.Count > 0)
                    {
                        foreach (var ca in childrenCategory)
                        {
                            childrenrow.CreateCell(childcolumn++).SetCellValue(ca.Name);
                        }

                        range1                 = hssfworkbook.CreateName();                      //创建名称
                        range1.NameName        = Category.Name;                                  //设置名称
                        colName                = GetExcelColumnName(childrenCategory.Count + 1); //根据序号获取列名,具体代码见下文
                        range1.RefersToFormula = string.Format("ShtDictionary!$B{1}:{0}{1}", colName, row);
                    }
                }



                DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint(fatherName);
                HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
                sheet1.AddValidationData(dataValidate);

                regions = new CellRangeAddressList(0, 0, 1, 1);

                DVConstraint constraint1 = DVConstraint.CreateFormulaListConstraint(string.Format("INDIRECT(${0}${1})", "A", 1));
                //  constraint = DVConstraint.CreateFormulaListConstraint("dicRange");
                dataValidate = new HSSFDataValidation(regions, constraint1);
                sheet1.AddValidationData(dataValidate);

                MemoryStream ms = new MemoryStream();
                hssfworkbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                string workbookFile = fileName;
                sheet2 = null;

                hssfworkbook = null;
                FileStream fs   = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);
                byte[]     data = ms.ToArray();
                fs.Write(data, 0, data.Length);
                fs.Flush();
                fs.Close();
            }
        }
        /// <summary>
        /// Excel 导出
        /// </summary>
        /// <param name="dataTable">数据源</param>
        /// <param name="fileName">保存路径</param>
        /// <param name="sheetName">sheet 名称</param>
        /// <param name="titleName">标题</param>
        public static void ExportExcel(DataTable dataTable, string fileName, string sheetName, string titleName)
        {
            //创建 Excel 文件
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
            //创建 Excel Sheet
            HSSFSheet hssfSheet = hssfWorkbook.CreateSheet(sheetName);
            //调色板实例
            Color LevelThreeColor = Color.FromArgb(197, 217, 241);

            hssfSheet.DefaultColumnWidth = 20;
            hssfSheet.DefaultRowHeight   = 10;

            //下拉列表
            CellRangeAddressList regions      = new CellRangeAddressList(0, 65535, 12, 12);
            DVConstraint         constraint   = DVConstraint.CreateExplicitListConstraint(new string[] { "未启动", "整改中", "已完成" });
            HSSFDataValidation   dataValidate = new HSSFDataValidation(regions, constraint);

            hssfSheet.AddValidationData(dataValidate);

            #region 合并单元格

            //合并单元格 , 开始行 , 结束行 ,开始列 ,结束列
            List <CellRangeAddress> cellRange  = new List <CellRangeAddress>();
            List <CellRangeAddress> cellRange2 = new List <CellRangeAddress>();
            cellRange.Add(new CellRangeAddress(0, 0, 0, 13));
            cellRange.Add(new CellRangeAddress(1, 1, 0, 8));
            cellRange.Add(new CellRangeAddress(1, 1, 9, 13));

            cellRange2.Add(new CellRangeAddress(2, 3, 0, 0));
            cellRange2.Add(new CellRangeAddress(2, 3, 1, 1));
            cellRange2.Add(new CellRangeAddress(2, 3, 2, 2));
            cellRange2.Add(new CellRangeAddress(2, 3, 3, 3));
            cellRange2.Add(new CellRangeAddress(2, 3, 4, 4));
            cellRange2.Add(new CellRangeAddress(2, 3, 5, 5));
            cellRange2.Add(new CellRangeAddress(2, 3, 6, 6));
            cellRange2.Add(new CellRangeAddress(2, 3, 7, 7));
            cellRange2.Add(new CellRangeAddress(2, 2, 8, 10));
            cellRange2.Add(new CellRangeAddress(2, 3, 11, 11));
            cellRange2.Add(new CellRangeAddress(2, 3, 12, 12));
            cellRange2.Add(new CellRangeAddress(2, 3, 13, 13));

            cellRange.Add(new CellRangeAddress(2, 3, 0, 0));
            cellRange.Add(new CellRangeAddress(2, 3, 1, 1));
            cellRange.Add(new CellRangeAddress(2, 3, 2, 2));
            cellRange.Add(new CellRangeAddress(2, 3, 3, 3));
            cellRange.Add(new CellRangeAddress(2, 3, 4, 4));
            cellRange.Add(new CellRangeAddress(2, 3, 5, 5));
            cellRange.Add(new CellRangeAddress(2, 3, 6, 6));
            cellRange.Add(new CellRangeAddress(2, 3, 7, 7));
            cellRange.Add(new CellRangeAddress(2, 2, 8, 10));
            cellRange.Add(new CellRangeAddress(2, 3, 11, 11));
            cellRange.Add(new CellRangeAddress(2, 3, 12, 12));
            cellRange.Add(new CellRangeAddress(2, 3, 13, 13));
            foreach (CellRangeAddress cell in cellRange)
            {
                hssfSheet.AddMergedRegion(cell);
            }

            #endregion

            #region 南京分行信息科技工作检查问题整改跟踪信息表

            //创建标题列头 xx分行信息科技工作检查问题整改跟踪信息表
            HSSFRow head_1_HSSFRow = hssfSheet.CreateRow(0);
            head_1_HSSFRow.Height = 200 * 5;
            head_1_HSSFRow.CreateCell(0).SetCellValue(titleName);

            //创建样式 Style Header
            HSSFCellStyle hssfCellStyle = hssfWorkbook.CreateCellStyle();
            //创建字体 Font  Header
            HSSFFont hssfFontHead = (HSSFFont)hssfWorkbook.CreateFont();
            //字体
            hssfFontHead.FontName           = "宋体";
            hssfFontHead.FontHeightInPoints = 16;
            hssfFontHead.Color = HSSFColor.BLACK.index;
            hssfCellStyle.SetFont(hssfFontHead);

            head_1_HSSFRow.GetCell(0).CellStyle = hssfCellStyle;
            #endregion

            #region 检查基本信息 、整改落实情况跟踪

            //创建标题列头 检查基本信息、	整改落实情况跟踪
            HSSFRow head_2_HSSFRow = hssfSheet.CreateRow(1);
            head_2_HSSFRow.HeightInPoints = 20;
            head_2_HSSFRow.CreateCell(0).SetCellValue("检查基本信息");
            head_2_HSSFRow.CreateCell(9).SetCellValue("整改落实情况跟踪");
            //样式
            HSSFCellStyle hssf_2_CellStyle = hssfWorkbook.CreateCellStyle();
            HSSFFont      hssf_2_FontHead  = (HSSFFont)hssfWorkbook.CreateFont();
            //字体
            hssfFontHead.FontName           = "宋体";
            hssfFontHead.FontHeightInPoints = 9;
            hssfFontHead.Color = HSSFColor.BLACK.index;
            hssf_2_CellStyle.SetFont(hssf_2_FontHead);

            head_2_HSSFRow.GetCell(0).CellStyle = hssf_2_CellStyle;
            head_2_HSSFRow.GetCell(9).CellStyle = hssf_2_CellStyle;

            #endregion

            #region 表列头 、 列名
            //样式
            HSSFCellStyle hssf_3_CellStyle = hssfWorkbook.CreateCellStyle();
            HSSFFont      hssf_3_FontHead  = (HSSFFont)hssfWorkbook.CreateFont();
            hssf_3_CellStyle.FillPattern         = CellFillPattern.SOLID_FOREGROUND;
            hssf_3_CellStyle.FillBackgroundColor = GetXLColour(hssfWorkbook, LevelThreeColor);
            hssf_3_CellStyle.BorderBottom        = CellBorderType.THIN;
            hssf_3_CellStyle.BorderLeft          = CellBorderType.THIN;
            hssf_3_CellStyle.BorderRight         = CellBorderType.THIN;
            hssf_3_CellStyle.BorderTop           = CellBorderType.THIN;

            //字体
            hssf_3_FontHead.FontName           = "宋体";
            hssf_3_FontHead.FontHeightInPoints = 9;
            hssf_3_FontHead.Color = HSSFColor.BLACK.index;
            hssf_3_CellStyle.SetFont(hssf_3_FontHead);

            HSSFRow content_1_HSSFRow = hssfSheet.CreateRow(2);
            content_1_HSSFRow.CreateCell(0).SetCellValue("序号");
            content_1_HSSFRow.CreateCell(1).SetCellValue("分行名称");
            content_1_HSSFRow.CreateCell(2).SetCellValue("检查开始时间");
            content_1_HSSFRow.CreateCell(3).SetCellValue("检查结束时间");
            content_1_HSSFRow.CreateCell(4).SetCellValue("检查项分类");
            content_1_HSSFRow.CreateCell(5).SetCellValue("问题性质");
            content_1_HSSFRow.CreateCell(6).SetCellValue("问题描述");
            content_1_HSSFRow.CreateCell(7).SetCellValue("检查意见");
            content_1_HSSFRow.CreateCell(8).SetCellValue("整改措施计划");
            content_1_HSSFRow.CreateCell(11).SetCellValue("推进情况");
            content_1_HSSFRow.CreateCell(12).SetCellValue("整改状态");
            content_1_HSSFRow.CreateCell(13).SetCellValue("最终完成时间");

            HSSFRow content_2_HSSFRow = hssfSheet.CreateRow(3);
            content_2_HSSFRow.CreateCell(8).SetCellValue("整改措施");
            content_2_HSSFRow.CreateCell(9).SetCellValue("整改完成标志");
            content_2_HSSFRow.CreateCell(10).SetCellValue("计划完成时间");

            content_2_HSSFRow.GetCell(8).CellStyle  = hssf_3_CellStyle;
            content_2_HSSFRow.GetCell(9).CellStyle  = hssf_3_CellStyle;
            content_2_HSSFRow.GetCell(10).CellStyle = hssf_3_CellStyle;
            #endregion

            #region 边框、背景颜色设置

            //创建样式 Style Bord
            HSSFCellStyle hssfCellStyleBord = hssfWorkbook.CreateCellStyle();
            //创建字体 Font  Bord
            hssfCellStyleBord.Alignment         = CellHorizontalAlignment.CENTER;
            hssfCellStyleBord.VerticalAlignment = CellVerticalAlignment.CENTER;
            hssfCellStyleBord.BorderBottom      = CellBorderType.THIN;
            hssfCellStyleBord.BorderLeft        = CellBorderType.THIN;
            hssfCellStyleBord.BorderRight       = CellBorderType.THIN;
            hssfCellStyleBord.BorderTop         = CellBorderType.THIN;
            HSSFFont hssfFontBord = (HSSFFont)hssfWorkbook.CreateFont();
            hssfFontBord.FontName           = "宋体";
            hssfFontBord.FontHeightInPoints = 12;
            hssfFontBord.Color = HSSFColor.BLACK.index;
            hssfCellStyleBord.SetFont(hssfFontBord);

            //边框
            foreach (var cell in cellRange)
            {
                for (int i = cell.FirstRow; i <= cell.LastRow; i++)
                {
                    HSSFRow row = HSSFCellUtil.GetRow(i, hssfSheet);
                    for (int j = cell.FirstColumn; j <= cell.LastColumn; j++)
                    {
                        HSSFCell singleCell = HSSFCellUtil.GetCell(row, (short)j);
                        singleCell.CellStyle = hssfCellStyleBord;
                    }
                }
            }

            //创建样式 Style Bord
            HSSFCellStyle hssfCellStyleBord_2 = hssfWorkbook.CreateCellStyle();
            hssfCellStyleBord_2.Alignment           = CellHorizontalAlignment.CENTER;
            hssfCellStyleBord_2.VerticalAlignment   = CellVerticalAlignment.CENTER;
            hssfCellStyleBord_2.BorderBottom        = CellBorderType.THIN;
            hssfCellStyleBord_2.BorderLeft          = CellBorderType.THIN;
            hssfCellStyleBord_2.BorderRight         = CellBorderType.THIN;
            hssfCellStyleBord_2.BorderTop           = CellBorderType.THIN;
            hssfCellStyleBord_2.FillPattern         = CellFillPattern.SOLID_FOREGROUND;
            hssfCellStyleBord_2.FillBackgroundColor = GetXLColour(hssfWorkbook, LevelThreeColor);

            hssfCellStyleBord_2.SetFont(hssfFontBord);

            foreach (var cell in cellRange2)
            {
                for (int i = cell.FirstRow; i <= cell.LastRow; i++)
                {
                    HSSFRow row = HSSFCellUtil.GetRow(i, hssfSheet);
                    for (int j = cell.FirstColumn; j <= cell.LastColumn; j++)
                    {
                        HSSFCell singleCell = HSSFCellUtil.GetCell(row, (short)j);
                        singleCell.CellStyle = hssfCellStyleBord_2;
                    }
                }
            }

            #endregion

            #region 数据内容

            try
            {
                #region 内容样式

                HSSFCellStyle hssf_i_CellStyle = hssfWorkbook.CreateCellStyle();
                HSSFFont      hssf_i_FontHead  = (HSSFFont)hssfWorkbook.CreateFont();
                hssf_i_CellStyle.Alignment         = CellHorizontalAlignment.CENTER;
                hssf_i_CellStyle.VerticalAlignment = CellVerticalAlignment.CENTER;
                hssf_i_CellStyle.BorderBottom      = CellBorderType.THIN;
                hssf_i_CellStyle.BorderLeft        = CellBorderType.THIN;
                hssf_i_CellStyle.BorderRight       = CellBorderType.THIN;
                hssf_i_CellStyle.BorderTop         = CellBorderType.THIN;

                //字体
                hssf_i_FontHead.FontName           = "宋体";
                hssf_i_FontHead.FontHeightInPoints = 12;
                hssf_i_FontHead.Color = HSSFColor.BLACK.index;
                hssf_i_CellStyle.SetFont(hssf_i_FontHead);
                hssf_i_CellStyle.IsLocked = false;
                #endregion
                if (dataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < dataTable.Rows.Count; i++)
                    {
                        HSSFRow dataHSSFRow = hssfSheet.CreateRow(i + 4);
                        dataHSSFRow.HeightInPoints = 20;
                        dataHSSFRow.CreateCell(0).SetCellValue(dataTable.Rows[i][0].ToString());
                        dataHSSFRow.CreateCell(1).SetCellValue(dataTable.Rows[i][1].ToString());
                        dataHSSFRow.CreateCell(2).SetCellValue(dataTable.Rows[i][2].ToString());
                        dataHSSFRow.CreateCell(3).SetCellValue(dataTable.Rows[i][3].ToString());
                        dataHSSFRow.CreateCell(4).SetCellValue(dataTable.Rows[i][4].ToString());
                        dataHSSFRow.CreateCell(5).SetCellValue(dataTable.Rows[i][5].ToString());
                        dataHSSFRow.CreateCell(6).SetCellValue(dataTable.Rows[i][6].ToString());
                        dataHSSFRow.CreateCell(7).SetCellValue(dataTable.Rows[i][7].ToString());

                        dataHSSFRow.CreateCell(8).SetCellValue(string.Empty);
                        dataHSSFRow.CreateCell(9).SetCellValue(string.Empty);
                        dataHSSFRow.CreateCell(10).SetCellValue(string.Empty);
                        dataHSSFRow.CreateCell(11).SetCellValue(string.Empty);
                        dataHSSFRow.CreateCell(12).SetCellValue(string.Empty);
                        dataHSSFRow.CreateCell(13).SetCellValue(string.Empty);
                        for (int j = 0; j < 14; j++)
                        {
                            dataHSSFRow.GetCell(j).CellStyle = hssf_i_CellStyle;
                        }
                    }
                }
                hssfSheet.ProtectSheet("21");
            }
            catch (Exception ex)
            {
                throw new Exception("导出 Excel 错误 , " + ex.Message);
            }

            #endregion

            //保存文件
            using (FileStream fileStream = new FileStream(fileName, FileMode.Create))
            {
                hssfWorkbook.Write(fileStream);
            }
        }
Beispiel #19
0
        public HSSFWorkbook ExportToExcelInOneSheet <T>(List <T> list)
        {
            if (SheetNames.Count == 0)
            {
                SheetNames.Add("CN");
            }
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet    sheet    = (HSSFSheet)workbook.CreateSheet(SheetNames.FirstOrDefault());

            if (defaultRowHeight > 0)
            {
                sheet.DefaultRowHeight = Convert.ToInt16(defaultRowHeight * 20);
            }
            if (columnWidth != null && columnWidth.Length > 0)
            {
                for (int i = 0; i < columnWidth.Length; i++)
                {
                    sheet.SetColumnWidth(i, columnWidth[i] * 256);
                }
            }

            if (list.Count > 0)
            {
                //填充表头
                Type t = list.FirstOrDefault().GetType();
                System.Reflection.PropertyInfo[] ps = t.GetProperties();
                HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);

                //dataRow.Height = 30 * 20;
                ICellStyle notesStyle = workbook.CreateCellStyle();
                if (cellStyle != null)
                {
                    notesStyle.CloneStyleFrom(cellStyle);
                }

                notesStyle.WrapText = true;//设置换行这个要先设置

                int headIndex = 0;
                //表头命名字典不为空,替换中文表头
                if (headDictionary != null && headDictionary.Count > 0)
                {
                    foreach (var dict in headDictionary)
                    {
                        sheet.SetDefaultColumnStyle(headIndex, notesStyle);
                        var cell = dataRow.CreateCell(headIndex);
                        cell.SetCellValue(dict.Value);
                        ICellStyle style = workbook.CreateCellStyle();
                        style.CloneStyleFrom(notesStyle);
                        style.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.LightBlue.Index;
                        //style.FillPattern = FillPattern.SolidForeground;
                        cell.CellStyle = style;
                        #region 222

                        var dropDownList = dropDownLists.FirstOrDefault(m => m.Key == dict.Key);
                        if (!string.IsNullOrWhiteSpace(dropDownList.Key))
                        {
                            System.Reflection.PropertyInfo p = ps.FirstOrDefault(m => m.Name == dropDownList.Key);
                            //创建新标签,并插入下拉框数据集
                            ISheet dSheet = workbook.CreateSheet(p.Name);

                            dSheet.CreateRow(0).CreateCell(0).SetCellValue(p.Name + "(请勿修改)");
                            //var dropdownlist = dropDownLists.First(m => m.Key == p.Name).Value;
                            for (var i = 0; i < dropDownList.Value.Length; i++)
                            {
                                dSheet.CreateRow(i + 1).CreateCell(0).SetCellValue(dropDownList.Value[i].ToString() + "");
                            }
                            //将下拉框数据集映射到主表中的单元格
                            IName range = workbook.CreateName();
                            range.RefersToFormula = string.Format("{0}!$A$2:$A${1}", p.Name + "", (dropDownList.Value.Length + 1).ToString());
                            range.NameName        = p.Name;
                            //CellRangeAddressList(首行,尾行,首列,尾列)
                            CellRangeAddressList regions      = new CellRangeAddressList(1, 65535, headIndex, headIndex);
                            DVConstraint         constraint   = DVConstraint.CreateFormulaListConstraint(range.NameName);
                            HSSFDataValidation   dataValidate = new HSSFDataValidation(regions, constraint);
                            sheet.AddValidationData(dataValidate);
                        }


                        #endregion
                        headIndex++;
                    }
                }
                else
                {
                    foreach (System.Reflection.PropertyInfo p in ps)
                    {
                        sheet.SetDefaultColumnStyle(headIndex, notesStyle);
                        dataRow.CreateCell(headIndex).SetCellValue(p.Name);


                        headIndex++;
                    }
                }
                #region 待优化的重复代码
                //如果下拉框字典不为空,执行插入下拉框的方法
                if (dropDownLists != null)
                {
                    //foreach (var dropDownList in dropDownLists)
                    //{
                    //System.Reflection.PropertyInfo p = ps.FirstOrDefault(m => m.Name == dropDownList.Key);
                    ////创建新标签,并插入下拉框数据集
                    //ISheet dSheet = workbook.CreateSheet(p.Name);

                    //dSheet.CreateRow(0).CreateCell(0).SetCellValue(p.Name + "(请勿修改)");
                    ////var dropdownlist = dropDownLists.First(m => m.Key == p.Name).Value;
                    //for (var i = 0; i < dropDownList.Value.Length; i++)
                    //{
                    //    dSheet.CreateRow(i + 1).CreateCell(0).SetCellValue(dropDownList.Value[i]);
                    //}
                    ////将下拉框数据集映射到主表中的单元格
                    //IName range = workbook.CreateName();
                    //range.RefersToFormula = string.Format("{0}!$A$2:$A${1}", p.Name, (dropDownList.Value.Length).ToString());
                    //range.NameName = "N" + Guid.NewGuid().ToString("N");
                    ////CellRangeAddressList(首行,尾行,首列,尾列)
                    //CellRangeAddressList regions = new CellRangeAddressList(1, 65535, headIndex, headIndex);
                    //DVConstraint constraint = DVConstraint.CreateFormulaListConstraint(range.NameName);
                    //HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
                    //sheet.AddValidationData(dataValidate);

                    //}
                }
                #endregion

                int rowIndex = 1;

                foreach (var item in list)
                {
                    dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
                    int colIndex = 0;
                    //根据字典中有的key导出数据
                    if (headDictionary != null && headDictionary.Count > 0)
                    {
                        foreach (var dict in headDictionary)
                        {
                            var cell = dataRow.CreateCell(colIndex);
                            cell.SetCellValue((ps.First(m => m.Name == dict.Key).GetValue(item, null) + "").Replace(@"\n", Environment.NewLine));
                            //ICellStyle style = workbook.CreateCellStyle();
                            //style.CloneStyleFrom(cellStyle);
                            //cell.CellStyle = style;
                            colIndex++;
                        }
                    }
                    else
                    {
                        foreach (System.Reflection.PropertyInfo p in ps)
                        {
                            try
                            {
                                var cell = dataRow.CreateCell(colIndex);
                                cell.SetCellValue((p.GetValue(item, null) + "").Replace(@"\n", Environment.NewLine));
                                //ICellStyle style = workbook.CreateCellStyle();
                                //style.CloneStyleFrom(cellStyle);
                                //cell.CellStyle = style;
                                //dataRow.CreateCell(colIndex).SetCellValue();
                            }
                            catch
                            {
                            }
                        }

                        colIndex++;
                    }


                    rowIndex++;
                }
            }

            return(workbook);
            //保存
            //SaveAndResponseFile(workbook, "数据关系视图");
            //workbook.Dispose();
        }
        private void PresetForProductSheet(HSSFSheet prdSheet, ISheet skuSheet, DateTime?sheetDate, ISheet atpSheet, Dictionary <int, ICellStyle> colors)
        {
            int?ThresholdQty = null;

            if (ConfigurationManager.AppSettings["ThresholdQty"] != null)
            {
                int qty;
                if (int.TryParse(ConfigurationManager.AppSettings["ThresholdQty"].ToString(), out qty))
                {
                    ThresholdQty = qty;
                }
            }
            for (int i = 1; i <= skuSheet.LastRowNum; i++)
            {
                HSSFRow row           = (HSSFRow)skuSheet.GetRow(i);
                string  cellPos       = ((HSSFCell)row.Cells[0]).ToString();
                string  multipleValue = ((HSSFCell)row.Cells[3]).ToString();
                string  colIdxstring  = string.Empty;
                int     colIdx        = -1;
                string  rowIdxstring  = string.Empty;
                int     rowIdx        = 0;
                for (int j = 0; j < cellPos.Length; j++)
                {
                    int ascii = (int)cellPos[j];
                    if (ascii > 57)
                    {
                        if (colIdx == -1)
                        {
                            colIdx = ascii - 65;
                        }
                        else
                        {
                            colIdx = (colIdx + 1) * 26 + (ascii - 65);
                        }
                        colIdxstring += cellPos[j];
                    }
                    else
                    {
                        rowIdxstring += cellPos[j];
                    }
                }
                rowIdx = int.Parse(rowIdxstring) - 1;
                ICell cell = prdSheet.GetRow(rowIdx).GetCell(colIdx);
                if (cell == null)
                {
                    WriteToLog(string.Format("Cell[{0}] is not created in sheet[{1}]", cellPos, prdSheet.SheetName));
                }
                else
                {
                    if (sheetDate.HasValue)
                    {
                        try
                        {
                            ICell    atpCell     = atpSheet.GetRow(rowIdx).GetCell(colIdx);
                            string   dateValues  = (atpCell == null ? string.Empty : atpSheet.GetRow(rowIdx).GetCell(colIdx).StringCellValue);
                            string[] arr         = dateValues.Split(new char[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries);
                            int      availbleQty = 0;
                            if (arr.Length == 1)
                            {
                                DateTime atpDate = DateTime.Parse(arr[0]);
                                if (atpDate <= sheetDate.Value)
                                {
                                    availbleQty = 999999;
                                }
                            }
                            else
                            {
                                for (int j = 0; j < arr.Length; j = j + 2)
                                {
                                    DateTime atpDate = DateTime.Parse(arr[j]);
                                    if (atpDate <= sheetDate.Value)
                                    {
                                        availbleQty += int.Parse(arr[j + 1]);
                                    }
                                }
                            }
                            var list = colors.Where(kvp => kvp.Key < availbleQty);
                            if (list.Count() > 0)
                            {
                                int colorIdx = list.LastOrDefault().Key;
                                cell.CellStyle = colors[colorIdx];
                            }
                            if (availbleQty > 0)
                            {
                                cell.CellStyle.IsLocked = false;
                                //cell.SetCellValue(availbleQty.ToString());
                                //if (ThresholdQty.HasValue && availbleQty > ThresholdQty)
                                //{
                                //    HSSFPatriarch patr = (HSSFPatriarch)prdSheet.CreateDrawingPatriarch();
                                //    HSSFComment comment = patr.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, colIdx, rowIdx, colIdx + 1, rowIdx + 1)) as HSSFComment;
                                //    comment.String = new HSSFRichTextString(string.Format("{0}+", ThresholdQty.Value));
                                //    comment.Author = "Plumriver";
                                //    cell.CellComment = comment;
                                //}
                            }
                        }
                        catch (Exception ex) {
                            WriteToLog(ex.Message);
                        }
                    }
                    else
                    {
                        cell.CellStyle.IsLocked = false;
                    }
                    DVConstraint       dvConstraint            = DVConstraint.CreateCustomFormulaConstraint(string.Format("(MOD(indirect(address(row(),column())) ,{0})=0)", multipleValue));
                    HSSFDataValidation orderMultipleValidation = new HSSFDataValidation(new CellRangeAddressList(cell.RowIndex, cell.RowIndex, cell.ColumnIndex, cell.ColumnIndex), dvConstraint);
                    orderMultipleValidation.CreateErrorBox("Multiple Value Cell", string.Format("You must enter a multiple of {0} in this cell.", multipleValue).Replace(".00 ", " ").Replace(".0 ", " "));
                    prdSheet.AddValidationData(orderMultipleValidation);
                }
            }
        }
Beispiel #21
0
        public static void test3()
        {
            HSSFWorkbook hssfworkbook = new HSSFWorkbook();
            HSSFSheet    sheet2       = hssfworkbook.CreateSheet("ShtDictionary") as HSSFSheet;
            HSSFRow      dataRow      = sheet2.CreateRow(0) as HSSFRow;

            dataRow.CreateCell(0).SetCellValue("省份");
            dataRow.CreateCell(1).SetCellValue("湖北");
            dataRow.CreateCell(2).SetCellValue("湖南");
            dataRow.CreateCell(3).SetCellValue("广东");

            dataRow = sheet2.CreateRow(1) as HSSFRow;
            dataRow.CreateCell(0).SetCellValue("湖北");
            dataRow.CreateCell(1).SetCellValue("汉口");
            dataRow.CreateCell(2).SetCellValue("汉阳");
            dataRow.CreateCell(3).SetCellValue("武昌");
            dataRow = sheet2.CreateRow(2) as HSSFRow;
            dataRow.CreateCell(0).SetCellValue("湖南");
            dataRow.CreateCell(1).SetCellValue("长沙");
            dataRow.CreateCell(2).SetCellValue("岳阳");
            dataRow.CreateCell(3).SetCellValue("长沙南");
            dataRow = sheet2.CreateRow(3) as HSSFRow;
            dataRow.CreateCell(0).SetCellValue("广东");
            dataRow.CreateCell(1).SetCellValue("深圳");
            dataRow.CreateCell(2).SetCellValue("广州");
            dataRow.CreateCell(3).SetCellValue("广州东");

            //  sheet2.IsRightToLeft = false;
            IName range1 = hssfworkbook.CreateName(); //创建名称

            range1.NameName = "省份";                   //设置名称
                                                      // var colName = GetExcelColumnName(colIndex);//根据序号获取列名,具体代码见下文
            range1.RefersToFormula = "ShtDictionary!$B1:D1";

            range1          = hssfworkbook.CreateName();  //创建名称
            range1.NameName = "湖北";                       //设置名称
            // var colName = GetExcelColumnName(colIndex);//根据序号获取列名,具体代码见下文
            range1.RefersToFormula = "ShtDictionary!$B2:D2";

            range1          = hssfworkbook.CreateName();  //创建名称
            range1.NameName = "湖南";                       //设置名称
            // var colName = GetExcelColumnName(colIndex);//根据序号获取列名,具体代码见下文
            range1.RefersToFormula = "ShtDictionary!$B3:D3";

            range1          = hssfworkbook.CreateName();  //创建名称
            range1.NameName = "广东";                       //设置名称
            // var colName = GetExcelColumnName(colIndex);//根据序号获取列名,具体代码见下文
            range1.RefersToFormula = "ShtDictionary!$B4:D4";
            //range1.RefersToFormula = string.Format("{0}!${3}${2}:${3}${1}",
            //    "ShtDictionary",
            //    "4",
            //    2,
            //    "A");

            // var colName = GetExcelColumnName(1);

            HSSFName range = hssfworkbook.CreateName() as HSSFName;

            //  range.RefersToFormula = "ShtDictionary!$B1:D1";
            range.RefersToFormula = "ShtDictionary!$A1:A4";
            range.NameName        = "dicRange";


            HSSFSheet            sheet1  = hssfworkbook.CreateSheet("Sheet1") as HSSFSheet;
            CellRangeAddressList regions = new CellRangeAddressList(0, 0, 0, 0);

            DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint("dicRange");
            HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);

            sheet1.AddValidationData(dataValidate);

            regions = new CellRangeAddressList(0, 0, 1, 1);

            DVConstraint constraint1 = DVConstraint.CreateFormulaListConstraint(string.Format("INDIRECT(${0}${1})", "A", 1));

            //  constraint = DVConstraint.CreateFormulaListConstraint("dicRange");
            dataValidate = new HSSFDataValidation(regions, constraint1);
            sheet1.AddValidationData(dataValidate);

            //regions = new CellRangeAddressList(2, 2, 0, 0);

            // constraint1 = DVConstraint.CreateFormulaListConstraint(string.Format("INDIRECT(${0}${1})", "C", 2));
            ////  constraint = DVConstraint.CreateFormulaListConstraint("dicRange");
            //dataValidate = new HSSFDataValidation(regions, constraint1);
            //sheet1.AddValidationData(dataValidate);


            MemoryStream ms = new MemoryStream();

            hssfworkbook.Write(ms);
            ms.Flush();
            ms.Position = 0;
            string workbookFile = @"D:\\8888.xls";

            sheet2 = null;

            hssfworkbook = null;
            FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write);

            byte[] data = ms.ToArray();
            fs.Write(data, 0, data.Length);
            fs.Flush();
            fs.Close();
        }
Beispiel #22
0
        protected override void SetExcelColumns(Sheet worksheet, DataFeedTemplate data)
        {
            ushort    colindex  = 0;
            ushort    colindex2 = 0;
            HSSFSheet sheet     = ((HSSFSheet)worksheet);
            CellStyle style     = sheet.Workbook.CreateCellStyle();

            style.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");

            for (int i = 0; i < data.BasicColumns.Count; i++)
            {
                var item = data.BasicColumns[i];

                if (item.Type == DataType.LIST)
                {
                    if (item.Type == DataType.LIST && item.List != null && item.List.Count > 0)
                    {
                        CellRangeAddressList regions = new CellRangeAddressList(HeaderNameRowIndex + 1, 65535, colindex2, colindex2);

                        Name      range        = WorkBook.CreateName();
                        HSSFSheet sheetDetails = (HSSFSheet)WorkBook.GetSheet(DETAILSHEET);

                        string celName = GetExcelColumnIndex(colindex);
                        range.RefersToFormula = DETAILSHEET + "!$" + celName + "$2" + ":$" + celName + "$" + (item.List.Count + 1);
                        range.NameName        = string.Format("sheet{0}ranges{1}",
                                                              worksheet.Workbook.GetSheetIndex(worksheet),
                                                              item.Number);

                        DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint(range.NameName);
                        HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
                        sheet.AddValidationData(dataValidate);

                        sheet.SetDefaultColumnStyle(colindex2, style);
                    }
                    colindex++;
                }
                this.SetExcelColumns(worksheet, item.Width * 600, colindex2);
                colindex2++;
            }

            if (data.Properties != null && data.Properties.Count > 0)
            {
                for (int i = 0; i < data.Properties.Count; i++)
                {
                    var item = data.Properties[i];

                    if (item.Type == DataType.LIST && item.List != null && item.List.Count > 0)
                    {
                        CellRangeAddressList regions = new CellRangeAddressList(HeaderNameRowIndex + 1, 65535, colindex2, colindex2);

                        Name      range        = WorkBook.CreateName();
                        HSSFSheet sheetDetails = (HSSFSheet)WorkBook.GetSheet(DETAILSHEET);

                        string celName = GetExcelColumnIndex(colindex);
                        range.RefersToFormula = DETAILSHEET + "!$" + celName + "$2" + ":$" + celName + "$" + (item.List.Count + 1);
                        range.NameName        = BuildRangeName(
                            item.Number,
                            worksheet.Workbook.GetSheetIndex(worksheet)
                            );

                        DVConstraint       constraint   = DVConstraint.CreateFormulaListConstraint(range.NameName);
                        HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);
                        sheet.AddValidationData(dataValidate);
                        sheet.SetDefaultColumnStyle(colindex2, style);
                    }
                    this.SetExcelColumns(worksheet, item.Width * 600, colindex2);
                    colindex++;
                    colindex2++;
                }
            }
        }
Beispiel #23
0
        public void TestAddToExistingSheet()
        {
            // dvEmpty.xls is a simple one sheet workbook.  With a DataValidations header record but no
            // DataValidations.  It's important that the example has one SHEETPROTECTION record.
            // Such a workbook can be Created in Excel (2007) by Adding datavalidation for one cell
            // and then deleting the row that contains the cell.
            HSSFWorkbook       wb    = HSSFTestDataSamples.OpenSampleWorkbook("dvEmpty.xls");
            int                dvRow = 0;
            HSSFSheet          sheet = (HSSFSheet)wb.GetSheetAt(0);
            DVConstraint       dc    = DVConstraint.CreateNumericConstraint(DVConstraint.ValidationType.INTEGER, DVConstraint.OperatorType.EQUAL, "42", null);
            HSSFDataValidation dv    = new HSSFDataValidation(new CellRangeAddressList(dvRow, dvRow, 0, 0), dc);

            dv.EmptyCellAllowed = (false);
            dv.ErrorStyle       = (HSSFDataValidation.ERRORSTYLE.STOP);
            dv.ShowPromptBox    = (true);
            dv.CreateErrorBox("Xxx", "Yyy");
            dv.SuppressDropDownArrow = (true);

            sheet.AddValidationData(dv);

            MemoryStream baos = new MemoryStream();

            try
            {
                wb.Write(baos);
            }
            catch (IOException)
            {
                throw;
            }

            byte[] wbData = baos.ToArray();

            //if (false)
            //{ // TODO (Jul 2008) fix EventRecordFactory to Process unknown records, (and DV records for that matter)

            //    ERFListener erfListener = null; // new MyERFListener();
            //    EventRecordFactory erf = new EventRecordFactory(erfListener, null);
            //    try
            //    {
            //        POIFSFileSystem fs = new POIFSFileSystem(new MemoryStream(baos.ToArray()));
            //        erf.ProcessRecords(fs.CreatePOIFSDocumentReader("Workbook"));
            //    }
            //    catch (RecordFormatException)
            //    {
            //        throw;
            //    }
            //    catch (IOException)
            //    {
            //        throw;
            //    }
            //}
            // else verify record ordering by navigating the raw bytes

            byte[] dvHeaderRecStart = { (byte)0xB2, 0x01, 0x12, 0x00, };
            int    dvHeaderOffset   = FindIndex(wbData, dvHeaderRecStart);

            Assert.IsTrue(dvHeaderOffset > 0);
            int nextRecIndex = dvHeaderOffset + 22;
            int nextSid
                = ((wbData[nextRecIndex + 0] << 0) & 0x00FF)
                  + ((wbData[nextRecIndex + 1] << 8) & 0xFF00)
                ;

            // nextSid should be for a DVRecord.  If anything comes between the DV header record
            // and the DV records, Excel will not be able to Open the workbook without error.

            if (nextSid == 0x0867)
            {
                throw new AssertFailedException("Identified bug 45519");
            }
            Assert.AreEqual(DVRecord.sid, nextSid);
        }
Beispiel #24
0
        /// <summary>
        /// 设置Excel单元格样式(标题),数据格式
        /// </summary>
        /// <param name="dateType">数据类型</param>
        /// <param name="porpetyIndex">单元格索引</param>
        /// <param name="sheet">Sheet页</param>
        /// <param name="dataSheet">数据Sheet页</param>
        /// <param name="dataStyle">样式</param>
        /// <param name="dataFormat">格式</param>
        public void SetColumnFormat(ColumnDataType dateType, int porpetyIndex, HSSFSheet sheet, HSSFSheet dataSheet, ICellStyle dataStyle, IDataFormat dataFormat)
        {
            HSSFDataValidation dataValidation = null;

            switch (dateType)
            {
            case ColumnDataType.Date:
                this.MinValueOrLength  = DateTime.Parse("1950/01/01").ToString("yyyy/MM/dd");
                this.MaxValuseOrLength = string.IsNullOrEmpty(this.MaxValuseOrLength) ? DateTime.MaxValue.ToString("yyyy/MM/dd") : this.MaxValuseOrLength;
                dataValidation         = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                                DVConstraint.CreateDateConstraint(OperatorType.BETWEEN, this.MinValueOrLength, this.MaxValuseOrLength, "yyyy/MM/dd"));
                dataValidation.CreateErrorBox("错误", "请输入日期");
                dataValidation.CreatePromptBox("请输入日期格式 yyyy/mm/dd", "在" + MinValueOrLength + " 到 " + MaxValuseOrLength + "之间");
                //dataStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("yyyy/MM/dd");
                dataStyle.DataFormat = dataFormat.GetFormat("yyyy/mm/dd");
                break;

            case ColumnDataType.Number:
                this.MinValueOrLength  = string.IsNullOrEmpty(this.MinValueOrLength) ? long.MinValue.ToString() : this.MinValueOrLength;
                this.MaxValuseOrLength = string.IsNullOrEmpty(this.MaxValuseOrLength) ? long.MaxValue.ToString() : this.MaxValuseOrLength;
                dataValidation         = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                                DVConstraint.CreateNumericConstraint(ValidationType.INTEGER, OperatorType.BETWEEN, this.MinValueOrLength, this.MaxValuseOrLength));
                dataValidation.CreateErrorBox("错误", "请输入数字");
                dataStyle.DataFormat = dataFormat.GetFormat("0");
                dataValidation.CreatePromptBox("请输入数字格式", "在" + MinValueOrLength + " 到 " + MaxValuseOrLength + "之间");
                break;

            case ColumnDataType.Float:
                this.MinValueOrLength  = string.IsNullOrEmpty(this.MinValueOrLength) ? decimal.MinValue.ToString() : this.MinValueOrLength;
                this.MaxValuseOrLength = string.IsNullOrEmpty(this.MaxValuseOrLength) ? decimal.MaxValue.ToString() : this.MaxValuseOrLength;
                dataValidation         = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                                DVConstraint.CreateNumericConstraint(ValidationType.DECIMAL, OperatorType.BETWEEN, this.MinValueOrLength, this.MaxValuseOrLength));
                dataValidation.CreateErrorBox("错误", "请输入小数");
                dataStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                dataValidation.CreatePromptBox("请输入小数", "在" + MinValueOrLength + " 到 " + MaxValuseOrLength + "之间");
                break;

            case ColumnDataType.Bool:
                dataValidation = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                        DVConstraint.CreateFormulaListConstraint("Sheet1!$A$1:$B$1"));
                dataValidation.CreateErrorBox("错误", "请输入下拉菜单中存在的数据");
                sheet.AddValidationData(dataValidation);
                dataValidation.CreatePromptBox("下拉菜单", "请输入下拉菜单中存在的数据");
                break;

            case ColumnDataType.Text:
                this.MinValueOrLength  = string.IsNullOrEmpty(this.MinValueOrLength) ? "0" : this.MinValueOrLength;
                this.MaxValuseOrLength = string.IsNullOrEmpty(this.MaxValuseOrLength) ? "2000" : this.MaxValuseOrLength;
                dataValidation         = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                                DVConstraint.CreateNumericConstraint(ValidationType.TEXT_LENGTH, OperatorType.BETWEEN, MinValueOrLength, MaxValuseOrLength));
                dataValidation.CreateErrorBox("错误", "文本长度不符合要求");
                dataStyle.DataFormat = dataFormat.GetFormat("@");
                dataValidation.CreatePromptBox("请输入文本", "在" + MinValueOrLength + " 到 " + MaxValuseOrLength + "之间");
                break;

            case ColumnDataType.ComboBox:
            case ColumnDataType.Enum:
                int    count    = this.ListItems.Count() == 0 ? 1 : this.ListItems.Count();
                string cloIndex = "";
                if (porpetyIndex > 25)
                {
                    cloIndex += Convert.ToChar((int)(Math.Floor(porpetyIndex / 26d)) - 1 + 65);
                }
                cloIndex += Convert.ToChar(65 + porpetyIndex % 26).ToString();
                //定义名称
                IName range = sheet.Workbook.CreateName();
                range.RefersToFormula = "Sheet2!$" + cloIndex + "$1:$" + cloIndex + "$" + count;
                range.NameName        = "dicRange" + porpetyIndex;
                //dataValidation = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                //    DVConstraint.CreateFormulaListConstraint("Sheet2!$" + cloIndex + "$1:$" + cloIndex + "$" + count));
                dataValidation = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                        DVConstraint.CreateFormulaListConstraint("dicRange" + porpetyIndex));
                dataValidation.CreateErrorBox("错误", "请输入下拉菜单中存在的数据");

                var listItemsTemp = this.ListItems.ToList();
                for (int rowIndex = 0; rowIndex < this.ListItems.Count(); rowIndex++)
                {
                    //HSSFRow dataSheetRow = (HSSFRow)dataSheet.CreateRow(rowIndex);
                    HSSFRow dataSheetRow = (HSSFRow)dataSheet.GetRow(rowIndex);
                    if (dataSheetRow == null)
                    {
                        dataSheetRow = (HSSFRow)dataSheet.CreateRow(rowIndex);
                    }
                    //dataSheetRow.CreateCell(porpetyIndex).SetCellValue(this.ListItems.ToList()[rowIndex].Text);
                    dataSheetRow.CreateCell(porpetyIndex).SetCellValue(listItemsTemp[rowIndex].Text);
                    dataStyle.DataFormat = dataFormat.GetFormat("@");
                    dataSheetRow.Cells.Where(x => x.ColumnIndex == porpetyIndex).FirstOrDefault().CellStyle = dataStyle;
                }
                sheet.AddValidationData(dataValidation);
                dataValidation.CreatePromptBox("下拉菜单", "请输入下拉菜单中存在的数据");
                break;

            default:
                dataValidation = new HSSFDataValidation(new CellRangeAddressList(1, 65535, porpetyIndex, porpetyIndex),
                                                        DVConstraint.CreateNumericConstraint(ValidationType.TEXT_LENGTH, OperatorType.BETWEEN, this.MinValueOrLength, this.MaxValuseOrLength));
                dataValidation.CreateErrorBox("错误", "文本长度不符合要求");
                dataStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");
                break;
            }
            if (!this.IsNullAble)
            {
                dataValidation.EmptyCellAllowed = false;
            }
            sheet.SetDefaultColumnStyle(porpetyIndex, dataStyle);
            sheet.AddValidationData(dataValidation);
        }