/// <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); }
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); }
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); }
/// <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); }