public bool Export(string templatePath) { EQASubSystemCollectin subSystems = DrawingData as EQASubSystemCollectin; if (subSystems.Count == 0) { return(true); } subSystems.Sort(); frmLongEquipmentIndent FrmLongEquipmentIndent = new frmLongEquipmentIndent(); System.Windows.Forms.DialogResult dlgResult = FrmLongEquipmentIndent.ShowDialog(); if (dlgResult == System.Windows.Forms.DialogResult.Cancel) { return(true); } _drawingLanguage = FrmLongEquipmentIndent.Language; // // 设备中有用电电源一项暂没有使用 // 本算法中将之用于设备归类 // 首先提取设备类别的种类,然后分类,分子项列出设备 // IList <string> equipmentTypes = new List <string>(); lock (subSystems) { // SubSystems foreach (EQASubSystem subSystem in subSystems) { if (subSystem.Loops.Count > 0) { // Loops foreach (EQALoop loop in subSystem.Loops) { if (loop.Equipments.Count > 0) { // Equipments foreach (EQAEquipment equip in loop.Equipments) { if (!equipmentTypes.Contains(equip.PowerSupplySource.Trim())) { equipmentTypes.Add(equip.PowerSupplySource.Trim()); } } } else { continue; } } } else { continue; } } } Microsoft.Office.Interop.Excel.ApplicationClass xlsApp = new ApplicationClass(); // 打开文件 xlsApp.Workbooks.Add(FrmLongEquipmentIndent.TemplatePath); Microsoft.Office.Interop.Excel.Workbook xlsWorkBook = xlsApp.Workbooks[1]; xlsApp.Visible = true; try { int pageCount; int currentPageNumber; int currentLineNumber; int lastLineNumber; string currentprefix = ""; Microsoft.Office.Interop.Excel.Worksheet xlsWorkSheet; switch (_drawingLanguage) { case DrawingLanguage.English: break; case DrawingLanguage.SimplifiedChinese: currentPageNumber = 1; currentLineNumber = 4; lastLineNumber = currentLineNumber; currentprefix = ""; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Activate(); lock (subSystems) { // SubSystems foreach (EQASubSystem subSystem in subSystems) { if (subSystem.Loops.Count > 0) { if (subSystem.SubSystemID.Length != 4) { xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "I" + currentLineNumber.ToString()).Merge(false); xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Value2 = subSystem.Name; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).RowHeight = 24; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Interior.ColorIndex = 33; lastLineNumber = currentLineNumber++; } else if (subSystem.SubSystemID.Length == 4 && !subSystemIDprefixs.ContainsKey(subSystem.SubSystemID.Substring(0, 2))) { xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "I" + currentLineNumber.ToString()).Merge(false); xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Value2 = subSystem.Name; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).RowHeight = 24; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Interior.ColorIndex = 33; lastLineNumber = currentLineNumber++; } else if (subSystem.SubSystemID.Length == 4 && subSystemIDprefixs.ContainsKey(subSystem.SubSystemID.Substring(0, 2)) && subSystem.SubSystemID.Substring(0, 2) != currentprefix) { currentprefix = subSystem.SubSystemID.Substring(0, 2); xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "I" + currentLineNumber.ToString()).Merge(false); xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Value2 = subSystemIDprefixs[currentprefix]; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).RowHeight = 24; xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "A" + currentLineNumber.ToString()).Interior.ColorIndex = 33; lastLineNumber = currentLineNumber++; } // Loops foreach (EQALoop loop in subSystem.Loops) { if (loop.Equipments.Count > 0) { // Equipments foreach (EQAEquipment equip in loop.Equipments) { xlsWorkSheet.get_Range("A" + currentLineNumber.ToString(), "J" + currentLineNumber.ToString()).Value2 = new object[] { equip.TagNo, equip.Name, equip.EqpType, equip.Quantity, equip.LowerLimit + "~" + equip.UpperLimit + equip.Unit, equip.Spec1 + " " + equip.Spec2 + " " + equip.Spec3, equip.Remark, loop.LoopNo, loop.Location + loop.ProcParameter, equip.FixedPlace, }; ++currentLineNumber; } xlsWorkSheet.PageSetup.PrintArea = "$A$1" + ":" + "$J$" + (currentLineNumber - 1).ToString(); //if (lastLineNumber + 1 == currentLineNumber // && subSystemIDprefixs.Values.Contains( // Convert.ToString(xlsWorkSheet.get_Range("A" + lastLineNumber.ToString(), "A" + lastLineNumber.ToString()).Value2))) { // xlsWorkSheet.get_Range("A" + lastLineNumber.ToString(), "I" + lastLineNumber.ToString()) // .Delete(XlDeleteShiftDirection.xlShiftUp); // currentLineNumber--; //} } } } } } break; default: break; } return(true); } catch (Exception ex) { string e = ex.Message; return(false); } }
public bool Export(string templatePath) { EQASubSystemCollectin subSystems = DrawingData as EQASubSystemCollectin; if (subSystems.Count == 0) { return(true); } subSystems.Sort(); frmMMKEquipmentList FrmMMKEquipmentList = new frmMMKEquipmentList(); System.Windows.Forms.DialogResult dlgResult = FrmMMKEquipmentList.ShowDialog(); if (dlgResult == System.Windows.Forms.DialogResult.Cancel) { return(true); } _drawingLanguage = FrmMMKEquipmentList.Language; _contractNo = FrmMMKEquipmentList.ContractNo; _drawingNo = FrmMMKEquipmentList.DrawingNo; _revision = FrmMMKEquipmentList.Revision; _topLevelNo = FrmMMKEquipmentList.TopLevelNo; _speciality = FrmMMKEquipmentList.Speciality; _stage = FrmMMKEquipmentList.Stage; _date = FrmMMKEquipmentList.Date; _madeBy = FrmMMKEquipmentList.MadeBy; _designBy = FrmMMKEquipmentList.DesignBy; _checkedBy = FrmMMKEquipmentList.CheckedBy; _reviewedBy = FrmMMKEquipmentList.ApprovedBy; if (!FrmMMKEquipmentList.KeepETNo) { int startNo = 0; for (int i = 0; i < subSystems.Count; i++) { for (int j = 0; j < subSystems[i].Loops.Count; j++) { for (int k = 0; k < subSystems[i].Loops[j].Equipments.Count; k++) { startNo = subSystems[i].Loops[j].Equipments[k].TagNo.IndexOf("-", 0); subSystems[i].Loops[j].Equipments[k].TagNo = subSystems[i].Loops[j].Equipments[k].TagNo.Substring(startNo); } } } } Microsoft.Office.Interop.Excel.ApplicationClass xlsApp = new ApplicationClass(); // 打开文件 xlsApp.Workbooks.Add(FrmMMKEquipmentList.TemplatePath); Microsoft.Office.Interop.Excel.Workbook xlsWorkBook = xlsApp.Workbooks[1]; xlsApp.Visible = true; try { int pageCount; int currentPageNumber; int eqpNumberInPages; Microsoft.Office.Interop.Excel.Worksheet xlsWorkSheet; switch (_drawingLanguage) { case DrawingLanguage.SimplifiedChinese: pageCount = 0; foreach (EQASubSystem subSystem in subSystems) { if ((subSystem.EquipmentsCount % 7) == 0) { pageCount += subSystem.EquipmentsCount / 7; } else { pageCount += Convert.ToInt32(Math.Ceiling(subSystem.EquipmentsCount / 7.0f)); } } for (int i = 0; i < pageCount - 1; i++) { (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).Copy(Missing.Value, xlsApp.Worksheets[1 + i]); } currentPageNumber = 0; eqpNumberInPages = 7; lock (subSystems) { if (subSystems.Count > 0) { for (int i = 0; i < subSystems.Count; i++) { EQASubSystem subSystem = subSystems[i]; currentPageNumber++; if (i > 0 && (subSystems[i - 1].EquipmentsCount % 7 == 0)) { currentPageNumber--; } eqpNumberInPages = 7; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); // 图纸格式 // 字体 xlsWorkSheet.get_Range("B7", "S13").Font.Name = "Times New Roman"; xlsWorkSheet.get_Range("B7", "S13").Font.Size = 11f; // 格式 xlsWorkSheet.get_Range("B7", "S13").HorizontalAlignment = Constants.xlCenter; xlsWorkSheet.get_Range("B7", "S13").VerticalAlignment = Constants.xlCenter; xlsWorkSheet.get_Range("M7", "M13").HorizontalAlignment = Constants.xlGeneral; xlsWorkSheet.get_Range("M7", "M13").VerticalAlignment = Constants.xlGeneral; xlsWorkSheet.get_Range("B7", "S13").WrapText = true; // // 图纸内容 // // 项目名称 xlsWorkSheet.get_Range("B2", Missing.Value).Value2 += "俄罗斯MMK冷轧公辅EP项目"; // 子系统 xlsWorkSheet.get_Range("B3", Missing.Value).Value2 += subSystem.Name; // // 图框内容 xlsWorkSheet.Shapes.Item("BTL").Ungroup(); // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } if (subSystem.Loops.Count > 0) { for (int j = 0; j < subSystem.Loops.Count; j++) { EQALoop loop = subSystem.Loops[j]; if (loop.Equipments.Count > 0) { // 回路号 xlsWorkSheet.get_Range("B" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasLoopNo ? loop.LoopNo : ""; //检测与控制项目 string item = loop.Location + loop.ProcParameter + (loop.HasLocalIndication ? @"/就地显示" : "") + (loop.HasLocalOperating ? @"/就地操作" : "") + (loop.HasComputerIndication ? @"/显示" : "") + (loop.HasComputerOperating ? @"/操作" : "") + (loop.HasRecording ? @"/记录" : "") + (loop.HasAlarm ? @"/报警" : "") + (loop.HasControlling ? @"/调节" : "") + (loop.HasInterlock ? @"/联锁" : ""); xlsWorkSheet.get_Range("D" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasItems ? item : ""; } for (int m = 0; m < loop.Equipments.Count; m++) { EQAEquipment eqp = loop.Equipments[m]; if (!eqp.IsEquipment) { continue; } // 位号 xlsWorkSheet.get_Range("C" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasTagNo ? eqp.TagNo : ""; // 其他项目 xlsWorkSheet.get_Range("E" + eqpNumberInPages.ToString(), "S" + eqpNumberInPages.ToString()).Value2 = new object[] { FrmMMKEquipmentList.HasEqpName?eqp.Name : "", FrmMMKEquipmentList.HasEqpType?eqp.EqpType : "", FrmMMKEquipmentList.HasMeasuringRangeMin?eqp.LowerLimit : "", FrmMMKEquipmentList.HasMeasuringRangeMax?eqp.UpperLimit : "", FrmMMKEquipmentList.HasMeasuringRangeUnit?eqp.Unit : "", FrmMMKEquipmentList.HasInputSignal?eqp.InputSignal : "", FrmMMKEquipmentList.HasOutputSignal?eqp.OutputSignal : "", FrmMMKEquipmentList.HasPowerSupply?eqp.PowerSupply : "", FrmMMKEquipmentList.HasSpec?eqp.Spec1 + ",\n" + eqp.Spec2 + ",\n" + eqp.Spec3 : "", FrmMMKEquipmentList.HasQuantity?eqp.Quantity.ToString() : "", FrmMMKEquipmentList.HasLocation?eqp.FixedPlace : "", FrmMMKEquipmentList.HasOperationRangeMin?loop.LowerLimit : "", FrmMMKEquipmentList.HasOperationRangeMax?loop.UpperLimit : "", FrmMMKEquipmentList.HasOperationRangeUnit?loop.Unit : "", FrmMMKEquipmentList.HasRemark?eqp.Remark : "" }; eqpNumberInPages++; if (eqpNumberInPages >= 14) { currentPageNumber++; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); // 图纸格式 // 字体 xlsWorkSheet.get_Range("B7", "S13").Font.Name = "Times New Roman"; xlsWorkSheet.get_Range("B7", "S13").Font.Size = 11f; // 格式 xlsWorkSheet.get_Range("B7", "S13").HorizontalAlignment = Constants.xlCenter; xlsWorkSheet.get_Range("B7", "S13").VerticalAlignment = Constants.xlCenter; xlsWorkSheet.get_Range("M7", "M13").HorizontalAlignment = Constants.xlGeneral; xlsWorkSheet.get_Range("M7", "M13").VerticalAlignment = Constants.xlGeneral; xlsWorkSheet.get_Range("B7", "S13").WrapText = true; // // 图纸内容 // // 项目名称 xlsWorkSheet.get_Range("B2", Missing.Value).Value2 = "项目名称:俄罗斯MMK冷轧公辅EP项目"; // 子系统 xlsWorkSheet.get_Range("B3", Missing.Value).Value2 = "子系统:" + subSystem.Name; // // 图框内容 xlsWorkSheet.Shapes.Item("BTL").Ungroup(); // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } eqpNumberInPages = 7; } } } } } } } break; case DrawingLanguage.English: pageCount = 0; foreach (EQASubSystem subSystem in subSystems) { if ((subSystem.EquipmentsCount % 3 == 0)) { pageCount += subSystem.EquipmentsCount / 3; } else { pageCount += Convert.ToInt32(Math.Ceiling(subSystem.EquipmentsCount / 3.0f)); } } (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).Shapes.Item("BTL").Ungroup(); // 图纸格式 // 字体 (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").Font.Name = "Times New Roman"; (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").Font.Size = 11f; // 格式 (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").HorizontalAlignment = Constants.xlCenter; (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").VerticalAlignment = Constants.xlCenter; (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("M9", "M14").HorizontalAlignment = Constants.xlGeneral; (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").WrapText = true; for (int i = 0; i < pageCount - 1; i++) { (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).Copy(Missing.Value, xlsApp.Worksheets[1 + i]); } currentPageNumber = 0; eqpNumberInPages = 9; lock (subSystems) { if (subSystems.Count > 0) { for (int i = 0; i < subSystems.Count; i++) { EQASubSystem subSystem = subSystems[i]; currentPageNumber++; if (i > 0 && (subSystems[i - 1].EquipmentsCount % 3 == 0)) { currentPageNumber--; } eqpNumberInPages = 9; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); // // 图纸内容 // // 子系统 xlsWorkSheet.get_Range("B3", Missing.Value).Value2 = "Sub-system/Подсистема: " + subSystem.Name; // // 图框内容 // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } if (subSystem.Loops.Count > 0) { for (int j = 0; j < subSystem.Loops.Count; j++) { EQALoop loop = subSystem.Loops[j]; if (loop.Equipments.Count > 0) { // 回路号 xlsWorkSheet.get_Range("B" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasLoopNo ? loop.LoopNo : ""; //检测与控制项目 string item = loop.Location + loop.ProcParameter + (loop.HasLocalIndication ? @"/就地显示" : "") + (loop.HasLocalOperating ? @"/就地操作" : "") + (loop.HasComputerIndication ? @"/显示" : "") + (loop.HasComputerOperating ? @"/操作" : "") + (loop.HasRecording ? @"/记录" : "") + (loop.HasAlarm ? @"/报警" : "") + (loop.HasControlling ? @"/调节" : "") + (loop.HasInterlock ? @"/联锁" : ""); xlsWorkSheet.get_Range("D" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasItems ? item : ""; } for (int m = 0; m < loop.Equipments.Count; m++) { EQAEquipment eqp = loop.Equipments[m]; if (!eqp.IsEquipment) { continue; } // 位号 xlsWorkSheet.get_Range("C" + eqpNumberInPages.ToString(), Missing.Value).Value2 = FrmMMKEquipmentList.HasTagNo ? eqp.TagNo : ""; // 其他项目 xlsWorkSheet.get_Range("E" + eqpNumberInPages.ToString(), "S" + eqpNumberInPages.ToString()).Value2 = new object[] { FrmMMKEquipmentList.HasEqpName?eqp.Name:"", FrmMMKEquipmentList.HasEqpType?eqp.EqpType:"", FrmMMKEquipmentList.HasMeasuringRangeMin?eqp.LowerLimit:"", FrmMMKEquipmentList.HasMeasuringRangeMax?eqp.UpperLimit:"", FrmMMKEquipmentList.HasMeasuringRangeUnit?eqp.Unit:"", FrmMMKEquipmentList.HasInputSignal?eqp.InputSignal:"", FrmMMKEquipmentList.HasOutputSignal?eqp.OutputSignal:"", FrmMMKEquipmentList.HasPowerSupply?eqp.PowerSupply:"", FrmMMKEquipmentList.HasSpec?eqp.Spec1 + ",\n" + eqp.Spec2:"", FrmMMKEquipmentList.HasQuantity?eqp.Quantity.ToString():"", FrmMMKEquipmentList.HasLocation?eqp.FixedPlace:"", FrmMMKEquipmentList.HasOperationRangeMin?loop.LowerLimit:"", FrmMMKEquipmentList.HasOperationRangeMax?loop.UpperLimit:"", FrmMMKEquipmentList.HasOperationRangeUnit?loop.Unit:"", FrmMMKEquipmentList.HasRemark?eqp.Remark:"" }; xlsWorkSheet.get_Range("B" + (eqpNumberInPages + 1).ToString(), "S" + (eqpNumberInPages + 1).ToString()).Value2 = xlsWorkSheet.get_Range("B" + eqpNumberInPages.ToString(), "S" + eqpNumberInPages.ToString()).Value2; eqpNumberInPages += 2; if (eqpNumberInPages >= 15) { currentPageNumber++; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); // // 图纸内容 // // 子系统 xlsWorkSheet.get_Range("B3", Missing.Value).Value2 = "Sub-system/Подсистема: " + subSystem.Name; // // 图框内容 // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } eqpNumberInPages = 9; } } } } } } } break; default: break; } return(true); } catch (Exception ex) { return(false); } //} finally { // IntPtr t = new IntPtr(xlsApp.Hwnd); // int k = 0; // GetWindowThreadProcessId(t, out k); // System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); // p.Kill(); //} }
public bool Export(string templatePath) { EQASubSystemCollectin subSystems = DrawingData as EQASubSystemCollectin; if (subSystems.Count == 0) { return(true); } subSystems.Sort(); frmMMKCableList FrmMMKCableList = new frmMMKCableList(); System.Windows.Forms.DialogResult dlgResult = FrmMMKCableList.ShowDialog(); if (dlgResult == System.Windows.Forms.DialogResult.Cancel) { return(true); } _drawingLanguage = FrmMMKCableList.Language; _contractNo = FrmMMKCableList.ContractNo; _drawingNo = FrmMMKCableList.DrawingNo; _revision = FrmMMKCableList.Revision; _topLevelNo = FrmMMKCableList.TopLevelNo; _speciality = FrmMMKCableList.Speciality; _stage = FrmMMKCableList.Stage; _date = FrmMMKCableList.Date; _madeBy = FrmMMKCableList.MadeBy; _designBy = FrmMMKCableList.DesignBy; _checkedBy = FrmMMKCableList.CheckedBy; _reviewedBy = FrmMMKCableList.ApprovedBy; Microsoft.Office.Interop.Excel.ApplicationClass xlsApp = new ApplicationClass(); // 打开文件 xlsApp.Workbooks.Add(FrmMMKCableList.TemplatePath); Microsoft.Office.Interop.Excel.Workbook xlsWorkBook = xlsApp.Workbooks[1]; xlsApp.Visible = true; try { int pageCount; int currentPageNumber; int cableNumberInPages; int currentCableNumber; Microsoft.Office.Interop.Excel.Worksheet xlsWorkSheet; switch (_drawingLanguage) { case DrawingLanguage.SimplifiedChinese: break; case DrawingLanguage.English: pageCount = 0; foreach (EQASubSystem subSystem in subSystems) { pageCount += subSystem.CablesCount; } if ((pageCount % 5 == 0)) { pageCount = pageCount / 5; } else { pageCount = Convert.ToInt32(Math.Ceiling(pageCount / 5.0f)); } (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).Shapes.Item("BTL").Ungroup(); // 图纸格式 // 字体 //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").Font.Name = "Times New Roman"; //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").Font.Size = 11f; //// 格式 //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").HorizontalAlignment = Constants.xlCenter; //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").VerticalAlignment = Constants.xlCenter; //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("M9", "M14").HorizontalAlignment = Constants.xlGeneral; //(xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).get_Range("B9", "S14").WrapText = true; for (int i = 0; i < pageCount - 1; i++) { (xlsApp.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet).Copy(Missing.Value, xlsApp.Worksheets[1 + i]); } currentPageNumber = 1; cableNumberInPages = 4; currentCableNumber = 1; lock (subSystems) { if (subSystems.Count > 0) { for (int i = 0; i < subSystems.Count; i++) { EQASubSystem subSystem = subSystems[i]; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); if (xlsWorkSheet.Index == 1) { // // 图框内容 // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } } // // 图纸内容 // if (subSystem.Cables.Count > 0) { for (int j = 0; j < subSystem.Cables.Count; j++) { EQACable cable = subSystem.Cables[j]; // 电缆内容 string[] cableSpec = cable.CableSpec.Split(' '); xlsWorkSheet.get_Range("B" + cableNumberInPages.ToString(), "O" + cableNumberInPages.ToString()).Value2 = new object[] { (currentCableNumber++).ToString(), cable.CableNo, cable.StartPosition, subSystems.EquipmentInSubSystems(cable.StartPosition) != null? subSystems.EquipmentInSubSystems(cable.StartPosition).Area : "", cable.EndPosition, subSystems.EquipmentInSubSystems(cable.EndPosition) != null? subSystems.EquipmentInSubSystems(cable.EndPosition).Area : "", cableSpec[0], cableSpec[cableSpec.Length - 1], cable.CableLength, cable.Route, cable.ConductSpec, cable.ConductLength, "", cable.Remark, }; xlsWorkSheet.get_Range("B" + (cableNumberInPages + 1).ToString(), "O" + (cableNumberInPages + 1).ToString()).Value2 = xlsWorkSheet.get_Range("B" + cableNumberInPages.ToString(), "O" + cableNumberInPages.ToString()).Value2; cableNumberInPages += 2; if (cableNumberInPages >= 14) { currentPageNumber++; xlsWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlsApp.Worksheets[currentPageNumber]; xlsWorkSheet.Name = (currentPageNumber).ToString(); xlsWorkSheet.Activate(); // // 图框内容 // 专业 xlsWorkSheet.Shapes.Item("DWG_SPECIALITY").TextFrame.Characters(Missing.Value, Missing.Value).Text = _speciality; // 设计阶段 xlsWorkSheet.Shapes.Item("DESIGN_STAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _stage; // 日期 xlsWorkSheet.Shapes.Item("PRINT_DATE").TextFrame.Characters(Missing.Value, Missing.Value).Text = _date; // 室审 xlsWorkSheet.Shapes.Item("DEPT_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _reviewedBy; // 审核 xlsWorkSheet.Shapes.Item("DWG_CHECKER").TextFrame.Characters(Missing.Value, Missing.Value).Text = _checkedBy; // 设计 xlsWorkSheet.Shapes.Item("DWG_DESIGN").TextFrame.Characters(Missing.Value, Missing.Value).Text = _designBy; // 制图 xlsWorkSheet.Shapes.Item("DWG_DRAW").TextFrame.Characters(Missing.Value, Missing.Value).Text = _madeBy; // 合同号 xlsWorkSheet.Shapes.Item("CONTRACT").TextFrame.Characters(Missing.Value, Missing.Value).Text = _contractNo; // 图号 xlsWorkSheet.Shapes.Item("DRAWING_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _drawingNo; // 高层代号 xlsWorkSheet.Shapes.Item("=").TextFrame.Characters(Missing.Value, Missing.Value).Text = "=" + _topLevelNo; // 修改号 xlsWorkSheet.Shapes.Item("REVISE_NO").TextFrame.Characters(Missing.Value, Missing.Value).Text = _revision; // 页次 if (xlsWorkSheet.Index < pageCount) { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = xlsWorkSheet.Index.ToString() + "+"; } else { xlsWorkSheet.Shapes.Item("PAGE").TextFrame.Characters(Missing.Value, Missing.Value).Text = (xlsWorkSheet.Index).ToString(); } cableNumberInPages = 4; } } } } } } break; default: break; } return(true); } catch (Exception ex) { return(false); } }