Exemple #1
0
 /// <summary>
 /// 将回路数据写入指定的EXCEL工作表
 /// </summary>
 /// <param name="excelService"></param>
 /// <param name="models"></param>
 /// <param name="sheetName"></param>
 /// <returns></returns>
 public bool ExportLoopDataToExcel(ref IExcelService excelService, List <LoopModel> models, string sheetName)
 {
     try
     {
         if (models.Count > 0)
         {
             IControllerConfig     config = ControllerConfigManager.GetConfigObject(ControllerType.FT8000);
             ColumnConfigInfo[]    deviceColumnDefinitionArray = config.GetDeviceColumns(); //取得器件的列定义信息
             List <MergeCellRange> lstMergeCellRange           = new List <MergeCellRange>();
             int startRowIndex   = 0;
             int currentRowIndex = 0;
             foreach (var loop in models)
             {
                 startRowIndex = currentRowIndex;
                 currentRowIndex++;
                 //回路标题
                 excelService.SetCellValue(sheetName, startRowIndex, 0, "回路:" + loop.Name, CellStyleType.SubCaption);
                 for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
                 {
                     excelService.SetCellValue(sheetName, currentRowIndex, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
                 }
                 //回路标题行合并
                 MergeCellRange mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = startRowIndex;
                 mergeCellRange.LastRowIndex     = startRowIndex;
                 mergeCellRange.FirstColumnIndex = 0;
                 mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
                 lstMergeCellRange.Add(mergeCellRange);
                 //写入器件信息
                 foreach (var device in loop.GetDevices <DeviceInfo8000>())
                 {
                     currentRowIndex++;
                     excelService.SetCellValue(sheetName, currentRowIndex, 0, device.Code, CellStyleType.Data);                                                         //器件编码
                     excelService.SetCellValue(sheetName, currentRowIndex, 1, config.GetDeviceTypeViaDeviceCode(device.TypeCode).Name, CellStyleType.Data);             //器件类型
                     excelService.SetCellValue(sheetName, currentRowIndex, 2, device.Feature == null?null:device.Feature.ToString(), CellStyleType.Data);               //特性
                     excelService.SetCellValue(sheetName, currentRowIndex, 3, device.Disable == null?null:device.Disable.ToString(), CellStyleType.Data);               //屏蔽
                     excelService.SetCellValue(sheetName, currentRowIndex, 4, device.SensitiveLevel == null?null:device.SensitiveLevel.ToString(), CellStyleType.Data); //灵敏度
                     excelService.SetCellValue(sheetName, currentRowIndex, 5, device.LinkageGroup1, CellStyleType.Data);                                                //输出组1
                     excelService.SetCellValue(sheetName, currentRowIndex, 6, device.LinkageGroup2, CellStyleType.Data);                                                //输出组2
                     excelService.SetCellValue(sheetName, currentRowIndex, 7, device.LinkageGroup3, CellStyleType.Data);                                                //输出组3
                     excelService.SetCellValue(sheetName, currentRowIndex, 8, device.DelayValue == null?null:device.DelayValue.ToString(), CellStyleType.Data);         //延时
                     excelService.SetCellValue(sheetName, currentRowIndex, 9, device.sdpKey, CellStyleType.Data);                                                       //手操号
                     excelService.SetCellValue(sheetName, currentRowIndex, 10, device.ZoneNo == null?null:device.ZoneNo.ToString(), CellStyleType.Data);                //分区
                     excelService.SetCellValue(sheetName, currentRowIndex, 11, device.BroadcastZone, CellStyleType.Data);                                               //广播分区
                     excelService.SetCellValue(sheetName, currentRowIndex, 12, device.Location, CellStyleType.Data);                                                    //安装地点
                 }
                 currentRowIndex++;
             }
             excelService.SetMergeCells(sheetName, lstMergeCellRange);//设置"回路页签"合并单元格
             excelService.SetColumnWidth(sheetName, 1, 15f);
             excelService.SetColumnWidth(sheetName, 12, 50f);
         }
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
 /// <summary>
 /// 将回路数据写入指定的EXCEL工作表
 /// </summary>
 /// <param name="excelService"></param>
 /// <param name="models"></param>
 /// <param name="sheetName"></param>
 /// <returns></returns>
 public bool ExportLoopDataToExcel(ref IExcelService excelService, List <LoopModel> models, string sheetName)
 {
     try
     {
         if (models.Count > 0)
         {
             IControllerConfig     config = ControllerConfigManager.GetConfigObject(ControllerType.NT8021);
             ColumnConfigInfo[]    deviceColumnDefinitionArray = config.GetDeviceColumns(); //取得器件的列定义信息
             List <MergeCellRange> lstMergeCellRange           = new List <MergeCellRange>();
             int startRowIndex   = 0;
             int currentRowIndex = 0;
             foreach (var loop in models)
             {
                 startRowIndex = currentRowIndex;
                 currentRowIndex++;
                 //回路标题
                 excelService.SetCellValue(sheetName, startRowIndex, 0, "回路:" + loop.Name, CellStyleType.SubCaption);
                 for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
                 {
                     excelService.SetCellValue(sheetName, currentRowIndex, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
                 }
                 //回路标题行合并
                 MergeCellRange mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = startRowIndex;
                 mergeCellRange.LastRowIndex     = startRowIndex;
                 mergeCellRange.FirstColumnIndex = 0;
                 mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
                 lstMergeCellRange.Add(mergeCellRange);
                 //写入器件信息
                 foreach (var device in loop.GetDevices <DeviceInfo8021>())
                 {
                     currentRowIndex++;
                     excelService.SetCellValue(sheetName, currentRowIndex, 0, device.Code, CellStyleType.Data);                                                                     //器件编码
                     excelService.SetCellValue(sheetName, currentRowIndex, 1, config.GetDeviceTypeViaDeviceCode(device.TypeCode).Name, CellStyleType.Data);                         //器件类型
                     excelService.SetCellValue(sheetName, currentRowIndex, 2, device.Disable == null?null:device.Disable.ToString(), CellStyleType.Data);                           //屏蔽
                     excelService.SetCellValue(sheetName, currentRowIndex, 3, device.CurrentThreshold == null?null:device.CurrentThreshold.ToString(), CellStyleType.Data);         //电流报警值
                     excelService.SetCellValue(sheetName, currentRowIndex, 4, device.TemperatureThreshold == null?null:device.TemperatureThreshold.ToString(), CellStyleType.Data); //温度报警值
                     excelService.SetCellValue(sheetName, currentRowIndex, 5, device.BuildingNo == null?null:device.BuildingNo.ToString(), CellStyleType.Data);                     //楼号
                     excelService.SetCellValue(sheetName, currentRowIndex, 6, device.ZoneNo == null?null:device.ZoneNo.ToString(), CellStyleType.Data);                             //区号
                     excelService.SetCellValue(sheetName, currentRowIndex, 7, device.FloorNo == null?null:device.FloorNo.ToString(), CellStyleType.Data);                           //层号
                     excelService.SetCellValue(sheetName, currentRowIndex, 8, device.RoomNo == null?null:device.RoomNo.ToString(), CellStyleType.Data);                             //房间号
                     excelService.SetCellValue(sheetName, currentRowIndex, 9, device.Location, CellStyleType.Data);                                                                 //安装地点
                 }
             }
             excelService.SetMergeCells(sheetName, lstMergeCellRange);//设置"回路页签"合并单元格
             excelService.SetColumnWidth(sheetName, 1, 15f);
             excelService.SetColumnWidth(sheetName, 9, 50f);
         }
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
Exemple #3
0
 public bool ExportStandardLinkageDataToExcel(ref IExcelService excelService, List <LinkageConfigStandard> models, string sheetName)
 {
     try
     {
         if (models.Count > 0)
         {
             #region 标准组态表头
             IControllerConfig     config = ControllerConfigManager.GetConfigObject(ControllerType.FT8000);
             ColumnConfigInfo[]    deviceColumnDefinitionArray = config.GetStandardLinkageConfigColumns(); //取得标准组态的列定义信息
             List <MergeCellRange> lstMergeCellRange           = new List <MergeCellRange>();
             int currentRowIndex = 0;
             excelService.SetCellValue(sheetName, currentRowIndex, 0, sheetName, CellStyleType.SubCaption);
             currentRowIndex++;
             for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
             {
                 excelService.SetCellValue(sheetName, currentRowIndex, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
             }
             MergeCellRange mergeCellRange = new MergeCellRange();
             mergeCellRange.FirstRowIndex    = 0;
             mergeCellRange.LastRowIndex     = 0;
             mergeCellRange.FirstColumnIndex = 0;
             mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
             lstMergeCellRange.Add(mergeCellRange);
             excelService.SetMergeCells(sheetName, lstMergeCellRange);
             foreach (var model in models)
             {
                 currentRowIndex++;
                 excelService.SetCellValue(sheetName, currentRowIndex, 0, model.Code, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 1, model.DeviceNo1, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 2, model.DeviceNo2, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 3, model.DeviceNo3, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 4, model.DeviceNo4, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 5, model.DeviceNo5, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 6, model.DeviceNo6, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 7, model.DeviceNo7, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 8, model.DeviceNo8, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 9, model.ActionCoefficient.ToString(), CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 10, model.LinkageNo1, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 11, model.LinkageNo2, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 12, model.LinkageNo3, CellStyleType.Data);
                 excelService.SetCellValue(sheetName, currentRowIndex, 13, model.Memo, CellStyleType.Data);
             }
             excelService.SetColumnWidth(sheetName, 13, 50f);
             #endregion
         }
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
        protected override bool GenerateExcelTemplateStandardSheet(List <string> sheetNames, int currentIndex, int loopSheetAmount, int maxLinkageAmount, ref IExcelService excelService)
        {
            try
            {
                #region 标准组态表头
                List <MergeCellRange> lstMergeCellRange = new List <MergeCellRange>();

                IControllerConfig  config = ControllerConfigManager.GetConfigObject(ControllerType.FT8003);
                ColumnConfigInfo[] deviceColumnDefinitionArray = config.GetStandardLinkageConfigColumns(); //取得标准组态的列定义信息

                excelService.SetCellValue(sheetNames[loopSheetAmount + currentIndex], 0, 0, sheetNames[loopSheetAmount + currentIndex], CellStyleType.SubCaption);
                for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
                {
                    excelService.SetCellValue(sheetNames[loopSheetAmount + currentIndex], 1, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
                }
                MergeCellRange mergeCellRange = new MergeCellRange();
                mergeCellRange.FirstRowIndex    = 0;
                mergeCellRange.LastRowIndex     = 0;
                mergeCellRange.FirstColumnIndex = 0;
                mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
                lstMergeCellRange.Add(mergeCellRange);
                excelService.SetMergeCells(sheetNames[loopSheetAmount + currentIndex], lstMergeCellRange);//设置"标准组态页签"合并单元格
                for (int i = 2; i < maxLinkageAmount + 3; i++)
                {
                    for (int j = 0; j < deviceColumnDefinitionArray.Length; j++)
                    {
                        excelService.SetCellValue(sheetNames[loopSheetAmount + currentIndex], i, j, null, CellStyleType.Data);
                    }
                }
                mergeCellRange = new MergeCellRange();
                mergeCellRange.FirstRowIndex    = 2;
                mergeCellRange.LastRowIndex     = maxLinkageAmount + 2;
                mergeCellRange.FirstColumnIndex = 5;
                mergeCellRange.LastColumnIndex  = 5;
                excelService.SetSheetValidationForListConstraint(sheetNames[loopSheetAmount + currentIndex], RefereceRegionName.ActionCoefficient.ToString(), mergeCellRange);

                #endregion
            }
            catch (Exception ex)
            {
                return(false);
            }
            return(true);
        }
Exemple #5
0
        public void SetSheetValidationForListConstraint(string sheetName, string rangeName, MergeCellRange cellRange)
        {
            CellRangeAddressList rangeList = new CellRangeAddressList(cellRange.FirstRowIndex, cellRange.LastRowIndex, cellRange.FirstColumnIndex, cellRange.LastColumnIndex);
            ISheet sheet = _workbook.GetSheet(sheetName);
            IDataValidationHelper     dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint constraint           = dataValidationHelper.CreateFormulaListConstraint(rangeName);
            HSSFDataValidation        validation           = (HSSFDataValidation)dataValidationHelper.CreateValidation(constraint, rangeList);

            sheet.AddValidationData(validation);
        }
 protected override bool GenerateExcelTemplateLoopSheet(List <string> sheetNames, IControllerConfig config, Model.BusinessModel.ExcelTemplateCustomizedInfo summaryInfo, ref IExcelService excelService)
 {
     try
     {
         #region 生成所有回路页签模板
         int                   currentLoopStartIndex       = 2;
         int                   defaultLoopCodeLength       = 2;                                 //默认回路编码长度
         string                loopSheetNamePrefix         = "";                                //回路页签名称前缀
         short                 maxDeviceAmount             = config.GetMaxDeviceAmountValue();
         int                   maxLoopAmount               = config.GetMaxLoopAmountValue();    //允许最大回路数量
         int                   defaultDeviceTypeCode       = summaryInfo.DefaultDeviceTypeCode; //默认器件编码
         DeviceType            defaultDeviceType           = config.GetDeviceTypeViaDeviceCode(defaultDeviceTypeCode);
         ColumnConfigInfo[]    deviceColumnDefinitionArray = config.GetDeviceColumns();         //取得器件的列定义信息
         List <MergeCellRange> lstMergeCellRange           = new List <MergeCellRange>();
         ControllerNodeModel[] nodes = config.GetNodes();
         for (int i = 0; i < nodes.Length; i++)
         {
             switch (nodes[i].Type)
             {
             case ControllerNodeType.Loop:
                 loopSheetNamePrefix = nodes[i].Name;
                 break;
             }
         }
         for (int i = currentLoopStartIndex; i <= summaryInfo.LoopSheetAmount + 1; i++)
         {
             lstMergeCellRange.Clear();
             for (int j = 0; j < summaryInfo.LoopAmountPerSheet; j++)
             {
                 if (maxLoopAmount < (j + 1 + (i - currentLoopStartIndex) * summaryInfo.LoopAmountPerSheet))//已经超出最大回路编号,退出循环
                 {
                     break;
                 }
                 string loopCode  = summaryInfo.MachineNumberFormatted + (j + 1 + (i - currentLoopStartIndex) * summaryInfo.LoopAmountPerSheet).ToString().PadLeft(defaultLoopCodeLength, '0');
                 int    extraLine = 0;
                 if (j != 0)
                 {
                     extraLine = 2;
                 }
                 //回路标题:回路1
                 excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + j * extraLine, 0, loopSheetNamePrefix + ":" + loopCode, CellStyleType.SubCaption);
                 for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
                 {
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + 1 + j * extraLine, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
                 }
                 //回路标题行合并
                 MergeCellRange mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + j * extraLine;
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + j * extraLine;
                 mergeCellRange.FirstColumnIndex = 0;
                 mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
                 lstMergeCellRange.Add(mergeCellRange);
                 //回路默认器件信息
                 for (int k = 0; k < maxDeviceAmount; k++)
                 {
                     string deviceCode = (k + 1).ToString().PadLeft(summaryInfo.SelectedDeviceCodeLength - defaultLoopCodeLength - summaryInfo.MachineNumberFormatted.Length, '0');
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 0, loopCode + deviceCode, CellStyleType.Data);  //器件编码
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 1, defaultDeviceType.Name, CellStyleType.Data); //器件类型
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 2, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 3, "0", CellStyleType.Data);                    //屏蔽
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 4, "2", CellStyleType.Data);                    //灵敏度
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 5, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 6, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 7, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 8, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 9, null, CellStyleType.Data);
                 }
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 1;
                 mergeCellRange.LastColumnIndex  = 1;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.DeviceType.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 2;
                 mergeCellRange.LastColumnIndex  = 2;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.Feature.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 3;
                 mergeCellRange.LastColumnIndex  = 3;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.Disable.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 4;
                 mergeCellRange.LastColumnIndex  = 4;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.SensitiveLevel.ToString(), mergeCellRange);
             }
             excelService.SetColumnWidth(sheetNames[i], 1, 15f);
             excelService.SetColumnWidth(sheetNames[i], 9, 50f);
             excelService.SetMergeCells(sheetNames[i], lstMergeCellRange);//设置"回路页签"合并单元格
         }
         #endregion
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
Exemple #7
0
        /// <summary>
        /// 生成EXCEL文件摘要信息页
        /// </summary>
        /// <param name="excelService"></param>
        /// <param name="sheetNames"></param>
        /// <returns></returns>
        protected bool GenerateExcelSummarySheet(ProjectModel project, ref IExcelService excelService, out List <string> sheetNames)
        {
            List <string> lstSheetNames = new List <string>();

            try
            {
                List <MergeCellRange> lstMergeCellRange = new List <MergeCellRange>();
                MergeCellRange        mergeCellRange    = new MergeCellRange();
                mergeCellRange.FirstRowIndex    = 0;
                mergeCellRange.LastRowIndex     = 0;
                mergeCellRange.FirstColumnIndex = 0;
                mergeCellRange.LastColumnIndex  = 2;
                lstMergeCellRange.Add(mergeCellRange);

                const int         Loop_Amount_Per_Sheet = 8;
                ControllerManager controllerManager     = new ControllerManager();
                controllerManager.InitializeAllControllerOperation(null);
                List <SummaryInfo> lstSummaryInfo = new List <SummaryInfo>();
                lstSheetNames.Add("项目摘要");
                foreach (var controller in project.Controllers)
                {
                    IControllerOperation controllerOperation = controllerManager.GetController(controller.Type);
                    //取控制器摘要信息逻辑
                    SummaryInfo controllerSummary = controllerOperation.GetSummaryNodes(controller, 2);
                    controllerSummary.Name += "-机号:" + controller.MachineNumber;
                    lstSummaryInfo.Add(controllerSummary);
                    int loopSheetAmount = Convert.ToInt32(Math.Ceiling((float)controller.Loops.Count / Loop_Amount_Per_Sheet));
                    for (int i = 0; i < loopSheetAmount; i++)
                    {
                        lstSheetNames.Add(controller.Name + "-回路分组" + (i + 1).ToString());
                    }
                    if (controller.StandardConfig.Count > 0)
                    {
                        lstSheetNames.Add(controller.Name + "-标准组态");
                    }
                    if (controller.MixedConfig.Count > 0)
                    {
                        lstSheetNames.Add(controller.Name + "-混合组态");
                    }
                    if (controller.GeneralConfig.Count > 0)
                    {
                        lstSheetNames.Add(controller.Name + "-通用组态");
                    }
                    if (controller.ControlBoard.Count > 0)
                    {
                        lstSheetNames.Add(controller.Name + "-网络手动盘");
                    }
                }
                excelService.CreateExcelSheets(lstSheetNames);

                ControllerOperationCommon controllerOperator = new ControllerOperationCommon();
                controllerOperator.SetDefaultExcelStyle(ref excelService); //取得默认EXCEL样式

                excelService.RowHeight = (short)20;                        //到下一个高度设置前,使用该高度
                excelService.SetCellValue(lstSheetNames[0], 0, 0, project.Name, CellStyleType.Caption);
                excelService.RowHeight = (short)15;
                int startRowIndex = 1; //开始行
                int endRowIndex   = 0; //结束行
                foreach (var info in lstSummaryInfo)
                {
                    endRowIndex++;
                    //info.name格式:summary.Name = "控制器:控制器名(控制器类型,器件长度)-机号:001";
                    startRowIndex = endRowIndex;
                    string strControllerName = "";
                    string strControllerType = "";
                    string strControllerDeviceAddressLength = "";
                    string strControllerMachineNumber       = "";
                    int    startIndex = info.Name.IndexOf(':') + 1;
                    int    endIndex   = info.Name.IndexOf('[');
                    if (startIndex < endIndex)
                    {
                        strControllerName = info.Name.Substring(startIndex, endIndex - startIndex);
                    }
                    startIndex = info.Name.IndexOf('[') + 1;
                    endIndex   = info.Name.IndexOf(',');
                    if (startIndex < endIndex)
                    {
                        strControllerType = info.Name.Substring(startIndex, endIndex - startIndex);
                    }

                    startIndex = info.Name.IndexOf(',') + 1;
                    endIndex   = info.Name.IndexOf(']');
                    if (startIndex < endIndex)
                    {
                        strControllerDeviceAddressLength = info.Name.Substring(startIndex, endIndex - startIndex);
                    }
                    startIndex = info.Name.LastIndexOf(':') + 1;
                    if (startIndex != -1)
                    {
                        strControllerMachineNumber = info.Name.Substring(startIndex);
                    }

                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 0, strControllerName, CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 1, "类型", CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 2, strControllerType, CellStyleType.Data);
                    endRowIndex++;
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 0, null, CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 1, "机号", CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 2, strControllerMachineNumber, CellStyleType.Data);
                    endRowIndex++;
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 0, null, CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 1, "器件长度", CellStyleType.Data);
                    excelService.SetCellValue(lstSheetNames[0], endRowIndex, 2, strControllerDeviceAddressLength + "位", CellStyleType.Data);
                    for (int i = 0; i < info.ChildNodes.Count; i++)
                    {
                        if (info.ChildNodes[i].Name != "设备类型")
                        {
                            endRowIndex++;
                            excelService.SetCellValue(lstSheetNames[0], endRowIndex, 0, null, CellStyleType.Data);
                            excelService.SetCellValue(lstSheetNames[0], endRowIndex, 1, info.ChildNodes[i].Name + "数量", CellStyleType.Data);
                            excelService.SetCellValue(lstSheetNames[0], endRowIndex, 2, info.ChildNodes[i].Number.ToString(), CellStyleType.Data);
                        }
                    }
                    mergeCellRange = new MergeCellRange();
                    mergeCellRange.FirstRowIndex    = startRowIndex;
                    mergeCellRange.LastRowIndex     = endRowIndex;
                    mergeCellRange.FirstColumnIndex = 0;
                    mergeCellRange.LastColumnIndex  = 0;
                    lstMergeCellRange.Add(mergeCellRange);
                }
                excelService.SetColumnWidth(lstSheetNames[0], 1, 15f);
                excelService.SetMergeCells(lstSheetNames[0], lstMergeCellRange);//设置"摘要信息"合并单元格
                sheetNames = lstSheetNames;
            }
            catch (Exception ex)
            {
                sheetNames = lstSheetNames;
                return(false);
            }
            return(true);
        }