public void GenerateReport(List <User> users) { try { try { if (dataToPrint == null) { MessageBox.Show("No results found"); } else if (dataToPrint.Count == 0) { MessageBox.Show("No results found"); } else { Mouse.SetCursor(Cursors.Wait); CreateExcelRef(); foreach (User user in users) { FillSheet(user.UserName); } _sheet.Delete(); // get rid of the last sheet that we dont fill OpenReport(); Mouse.SetCursor(Cursors.Arrow); } } catch (Exception exception) { MessageBox.Show(string.Concat("Error while generating Excel report", exception.ToString())); } } finally { ReleaseObject(_sheet); ReleaseObject(_sheets); ReleaseObject(_book); ReleaseObject(_books); ReleaseObject(_excelApp); } }
/// <summary> /// 删除一个工作表. /// </summary> /// <param name=SheetName"></param> public void deleteSheet(string SheetName) { try { _Worksheet Sheet = (_Worksheet)App.Worksheets.get_Item(SheetName); App.DisplayAlerts = false; Sheet.Delete(); } catch (Exception err) { throw new Exception( String.Format(CultureInfo.InvariantCulture, "Can not delete sheet '{0}'", SheetName), err); } }
public static void Export(List <PatientClass> patientList, DbEngine dbEngine) { CultureInfo oldCi = Thread.CurrentThread.CurrentCulture; try { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); // Стартуем Excel-приложение _oxl = new Application(); // Создаем новую книгу _oxb = _oxl.Workbooks.Add(Missing.Value); _ows = (_Worksheet)_oxb.Sheets[3]; _ows.Delete(); _ows = (_Worksheet)_oxb.Sheets[2]; _ows.Delete(); _ows = (_Worksheet)_oxb.Sheets[1]; _ows.Cells.WrapText = true; _ows.Cells.VerticalAlignment = 2; _ows.Cells.HorizontalAlignment = 2; _owr = _ows.get_Range("A1", "Q1"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[1, 1] = "Список пациентов на " + ConvertEngine.GetRightDateString(DateTime.Now); _owr = _ows.get_Range("R1", "AB1"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[1, 18] = "Данные по операциям"; _owr = _ows.get_Range("A2", "A2"); _owr.ColumnWidth = 15; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "ФИО пациента"; _owr = _ows.get_Range("B2", "B2"); _owr.ColumnWidth = 4; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Возраст"; _owr = _ows.get_Range("C2", "C2"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата рождения"; _owr = _ows.get_Range("D2", "D2"); _owr.ColumnWidth = 14; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Адрес"; _owr = _ows.get_Range("E2", "E2"); _owr.ColumnWidth = 14; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Место работы"; _owr = _ows.get_Range("F2", "F2"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Телефон"; _owr = _ows.get_Range("G2", "G2"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Тип стационара"; _owr = _ows.get_Range("H2", "H2"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Код МКБ"; _owr = _ows.get_Range("I2", "I2"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Код КСГ"; _owr = _ows.get_Range("J2", "J2"); _owr.ColumnWidth = 20; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Расшифровка кода КСГ"; _owr = _ows.get_Range("K2", "K2"); _owr.ColumnWidth = 13; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Нозология"; _owr = _ows.get_Range("L2", "L2"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Лечащий врач"; _owr = _ows.get_Range("M2", "M2"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата поступления"; _owr = _ows.get_Range("N2", "N2"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата выписки"; _owr = _ows.get_Range("O2", "O2"); _owr.ColumnWidth = 7; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "№ истории болезни"; _owr = _ows.get_Range("P2", "P2"); _owr.ColumnWidth = 5; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Количество операций"; _owr = _ows.get_Range("Q2", "Q2"); _owr.ColumnWidth = 25; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Диагноз"; _owr = _ows.get_Range("R2", "R2"); _owr.ColumnWidth = 22; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Название операции"; _owr = _ows.get_Range("S2", "S2"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата операции"; _owr = _ows.get_Range("T2", "T2"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Время начала операции"; _owr = _ows.get_Range("U2", "U2"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Время окончания операции"; _owr = _ows.get_Range("V2", "V2"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Список хирургов"; _owr = _ows.get_Range("W2", "W2"); _owr.ColumnWidth = 12; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Список ассистентов"; _owr = _ows.get_Range("X2", "X2"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Анестезист"; _owr = _ows.get_Range("Y2", "Y2"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Анестезистка"; _owr = _ows.get_Range("Z2", "Z2"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Операц. мед. сестра"; _owr = _ows.get_Range("AA2", "AA2"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Санитар"; _owr = _ows.get_Range("AB2", "AB2"); _owr.ColumnWidth = 85; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Ход операции"; int rowCnt = 3; for (int i = 0; i < patientList.Count; i++) { _ows.Cells[rowCnt, 1] = patientList[i].GetFullName(); _ows.Cells[rowCnt, 2] = patientList[i].Age.ToString(); if (patientList[i].Birthday.HasValue) { _ows.Cells[rowCnt, 3] = ConvertEngine.GetRightDateString(patientList[i].Birthday.Value, false); } _ows.Cells[rowCnt, 4] = patientList[i].GetAddress(); _ows.Cells[rowCnt, 5] = patientList[i].WorkPlace; _ows.Cells[rowCnt, 6] = patientList[i].Phone; _ows.Cells[rowCnt, 7] = patientList[i].TypeOfKSG; _ows.Cells[rowCnt, 8] = patientList[i].MKB; _ows.Cells[rowCnt, 9] = patientList[i].KSG; if (!string.IsNullOrEmpty(patientList[i].MKB) && !string.IsNullOrEmpty(patientList[i].KSG) && !string.IsNullOrEmpty(patientList[i].TypeOfKSG)) { MKBEngine mkb = dbEngine.GetCorrectMKBEngine(patientList[i].TypeOfKSG); MKBClass mkbInfo = mkb.GetMkbInfo(patientList[i].MKB, patientList[i].KSG); _ows.Cells[rowCnt, 10] = mkbInfo.KsgDecoding; } _ows.Cells[rowCnt, 11] = patientList[i].Nosology; _ows.Cells[rowCnt, 12] = patientList[i].DoctorInChargeOfTheCase; _ows.Cells[rowCnt, 13] = ConvertEngine.GetRightDateString(patientList[i].DeliveryDate, true); if (patientList[i].ReleaseDate.HasValue) { _ows.Cells[rowCnt, 14] = ConvertEngine.GetRightDateString(patientList[i].ReleaseDate.Value, true); } _ows.Cells[rowCnt, 15] = patientList[i].NumberOfCaseHistory; _ows.Cells[rowCnt, 16] = patientList[i].Operations.Count.ToString(); _ows.Cells[rowCnt, 17] = patientList[i].Diagnose; if (patientList[i].Operations.Count == 0) { rowCnt++; } else { foreach (OperationClass operationInfo in patientList[i].Operations) { _ows.Cells[rowCnt, 18] = operationInfo.Name; _ows.Cells[rowCnt, 19] = ConvertEngine.GetRightDateString(operationInfo.DataOfOperation); _ows.Cells[rowCnt, 20] = ConvertEngine.GetRightTimeString(operationInfo.StartTimeOfOperation); _ows.Cells[rowCnt, 21] = ConvertEngine.GetRightTimeString(operationInfo.EndTimeOfOperation); _ows.Cells[rowCnt, 22] = ListToString(operationInfo.Surgeons); _ows.Cells[rowCnt, 23] = ListToString(operationInfo.Assistents); _ows.Cells[rowCnt, 24] = operationInfo.HeAnaesthetist; _ows.Cells[rowCnt, 25] = operationInfo.SheAnaesthetist; _ows.Cells[rowCnt, 26] = operationInfo.ScrubNurse; _ows.Cells[rowCnt, 27] = operationInfo.Orderly; _ows.Cells[rowCnt, 28] = operationInfo.OperationCourse; rowCnt++; } } } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (_oxl != null) { _oxl.Visible = true; _oxl.UserControl = true; if (_oxb != null) { Marshal.ReleaseComObject(_oxb); _oxb = null; } if (_ows != null) { Marshal.ReleaseComObject(_ows); _ows = null; } if (_owr != null) { Marshal.ReleaseComObject(_owr); _owr = null; } Marshal.ReleaseComObject(_oxl); _oxl = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } Thread.CurrentThread.CurrentCulture = oldCi; } }
/// <summary> /// Supprime la feuille active /// </summary> public void SupprimerFeuille() { _MaFeuille.Delete(); }
private void Generate_Click(object sender, RoutedEventArgs e) { List <string> NCProg_Tools = new List <string>(); Microsoft.Office.Interop.Excel.Application oXL; _Workbook oWB; _Worksheet oSheetProjectSummary = null; _Worksheet oSheetProjectSummaryFull = null; _Worksheet oSheetNCProgSummary = null; _Worksheet oSheetNewNCProgSummary = null; _Worksheet oSheetToolpathDetails = null; _Worksheet oSheetToolList = null; _Worksheet oSheetNewToolList = null; Dictionary <string, string> VarsListProjectSummary = new Dictionary <string, string>(); Dictionary <string, string> VarsListProjectSummaryFull = new Dictionary <string, string>(); Dictionary <string, string> VarsListNCProgSummary = new Dictionary <string, string>(); Dictionary <string, string> VarsListToolpathDetails = new Dictionary <string, string>(); Dictionary <string, string> VarsListToolList = new Dictionary <string, string>(); bool Has_ProjectSummary = false; bool Has_ProjectSummaryFull = false; bool Has_NCProgSummary = false; bool Has_ToolList = false; bool Has_ToolpathDetails = false; string Project_Path = PowerMILLAutomation.ExecuteEx("print $project_pathname(0)"); string NCProgDetails = ""; string MergedModelList = ""; int FileQty = 0; if (listNCProgsSelected.Items.Count == 0) { //No NC Program selected, do nothing... MessageBox.Show("Please select at least one NC Program"); } else { List <ToolInfo> ToolData = new List <ToolInfo>(); List <ToolpathInfo> ToolpathData = new List <ToolpathInfo>(); List <ToolInfo> ProjectToolData = new List <ToolInfo>(); List <ToolpathInfo> ProjectToolpathData = new List <ToolpathInfo>(); ProjectInfo Project = new ProjectInfo(); //Start Excel and get Application object. oXL = new Microsoft.Office.Interop.Excel.Application(); oXL.Visible = true; oXL.DisplayAlerts = false; //Get the template from the option page string Path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\ExcellSetupSheet\\Template.ini"; string TemplateFile = ""; if (File.Exists(Path)) { const Int32 BufferSize = 128; using (var fileStream = File.OpenRead(Path)) using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) { String line; while ((line = streamReader.ReadLine()) != null) { TemplateFile = line; } } } else { Path = System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Substring(8, System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Length - 8); string directory = System.IO.Path.GetDirectoryName(Path); TemplateFile = directory + "\\Tool_List.xlsx"; } if (!Directory.Exists(Project_Path + "\\Excel_Setupsheet\\")) { Directory.CreateDirectory(Project_Path + "\\Excel_Setupsheet\\"); } string[] fileArrayXLSX = Directory.GetFiles(Project_Path + "\\Excel_Setupsheet\\", "*.xlsx"); string[] fileArrayXLS = Directory.GetFiles(Project_Path + "\\Excel_Setupsheet\\", "*.xls"); foreach (string File in fileArrayXLSX) { if (File.IndexOf("~$") < 0) { FileQty = FileQty + 1; } } foreach (string File in fileArrayXLS) { if (File.IndexOf("~$") < 0) { FileQty = FileQty + 1; } } if (FileQty > 0) { File.Copy(TemplateFile, Project_Path + "\\Excel_Setupsheet\\SetupSheet_" + FileQty + ".xlsx"); TemplateFile = Project_Path + "\\Excel_Setupsheet\\SetupSheet_" + FileQty + ".xlsx"; } else { File.Copy(TemplateFile, Project_Path + "\\Excel_Setupsheet\\SetupSheet.xlsx"); TemplateFile = Project_Path + "\\Excel_Setupsheet\\SetupSheet.xlsx"; } //Get a new workbook. oWB = (_Workbook)(oXL.Workbooks.Open(TemplateFile)); List <string> ModelList = PowerMILLAutomation.GetListOf(PowerMILLAutomation.enumEntity.MachinableModels); PowerMILLAutomation.GetModelsLimits(ModelList, out double ModelsMinX, out double ModelsMinY, out double ModelsMinZ, out double ModelsMaxX, out double ModelsMaxY, out double ModelsMaxZ); Project = new ProjectInfo(); Project.MachModelsMaxX = ModelsMaxX.ToString(); Project.MachModelsMaxY = ModelsMaxY.ToString(); Project.MachModelsMaxZ = ModelsMaxZ.ToString(); Project.MachModelsMinX = ModelsMinX.ToString(); Project.MachModelsMinY = ModelsMinY.ToString(); Project.MachModelsMinZ = ModelsMinZ.ToString(); Project.Name = PowerMILLAutomation.ExecuteEx("print $project_pathname(1)"); Project.Path = PowerMILLAutomation.ExecuteEx("print $project_pathname(0)"); Project.OrderNumber = PowerMILLAutomation.ExecuteEx("print $project.orderNumber"); Project.Programmer = PowerMILLAutomation.ExecuteEx("print $project.programmer"); Project.PartName = PowerMILLAutomation.ExecuteEx("print $project.partname"); Project.Customer = PowerMILLAutomation.ExecuteEx("print $project.customer"); Project.Date = DateTime.Now.ToString(); Project.Notes = PowerMILLAutomation.ExecuteEx("print $project.notes"); Project.ExcelTemplate = TemplateFile; foreach (string Model in ModelList) { MergedModelList = MergedModelList + Environment.NewLine + Model; } Project.ModelsList = MergedModelList; Project.CombinedNCTPList = ""; foreach (Worksheet worksheet in oWB.Worksheets) { if (worksheet.Name == "Project_Summary") { oSheetProjectSummary = worksheet; //Extract template keywords and cell adresses VarsListProjectSummary = WriteFiles.ExtractTemplateData(oSheetProjectSummary); Has_ProjectSummary = true; } else if (worksheet.Name == "Project_Summary_Full") { oSheetProjectSummaryFull = worksheet; //Extract template keywords and cell adresses VarsListProjectSummaryFull = WriteFiles.ExtractTemplateData(oSheetProjectSummaryFull); Has_ProjectSummaryFull = true; } else if (worksheet.Name == "NCProg_Summary") { oSheetNCProgSummary = worksheet; //Extract template keywords and cell adresses VarsListNCProgSummary = WriteFiles.ExtractTemplateData(oSheetNCProgSummary); Has_NCProgSummary = true; } else if (worksheet.Name == "Toolpath_Details") { oSheetToolpathDetails = worksheet; //Extract template keywords and cell adresses VarsListToolpathDetails = WriteFiles.ExtractTemplateData(oSheetToolpathDetails); Has_ToolpathDetails = true; } else if (worksheet.Name == "ToolList") { oSheetToolList = worksheet; //Extract template keywords and cell adresses VarsListToolList = WriteFiles.ExtractTemplateData(oSheetToolList); Has_ToolList = true; } } List <string> NCProg_Toolpaths = new List <string>(); foreach (String NCProg in listNCProgsSelected.Items) { if (NCProgDetails == "") { NCProgDetails = NCProg; } else { NCProgDetails = NCProgDetails + Environment.NewLine + NCProg; } NCProg_Toolpaths = PowerMILLAutomation.GetNCProgToolpathes(NCProg); foreach (string Toolpath in NCProg_Toolpaths) { NCProgDetails = NCProgDetails + Environment.NewLine + " " + Toolpath; } Project.TotalTime = Project.TotalTime + double.Parse(PowerMILLAutomation.ExecuteEx("print $entity('ncprogram';'" + NCProg + "').Statistics.TotalTime")); //Extract the PowerMILL parameters found in the template from the current NCProgram toolapths WriteFiles.ExtractData(NCProg, out ToolData, out ToolpathData); if (Has_ProjectSummaryFull) { foreach (ToolpathInfo Toolpath in ToolpathData) { ProjectToolpathData.Add(new ToolpathInfo { Name = Toolpath.Name, Description = Toolpath.Description, Notes = Toolpath.Notes, ToolName = Toolpath.ToolName, ToolNumber = Toolpath.ToolNumber, ToolDiameter = Toolpath.ToolDiameter, ToolType = Toolpath.ToolType, ToolCutterLength = Toolpath.ToolCutterLength, ToolHolderName = Toolpath.ToolHolderName, ToolOverhang = Toolpath.ToolOverhang, ToolNumberOfFlutes = Toolpath.ToolNumberOfFlutes, ToolLengthOffset = Toolpath.ToolLengthOffset, ToolRadOffset = Toolpath.ToolRadOffset, ToolpathType = Toolpath.ToolpathType, ToolTipRadius = Toolpath.ToolTipRadius, ToolDescription = Toolpath.ToolDescription, Thickness = Toolpath.Thickness, AxialThickness = Toolpath.AxialThickness, CutterComp = Toolpath.CutterComp, Feed = Toolpath.Feed, Speed = Toolpath.Speed, IPT = Toolpath.IPT, SFM = Toolpath.SFM, PlungeFeed = Toolpath.PlungeFeed, SkimFeed = Toolpath.SkimFeed, Coolant = Toolpath.Coolant, Stepover = Toolpath.Stepover, DOC = Toolpath.DOC, GeneralAxisType = Toolpath.GeneralAxisType, Statistic_Time = Toolpath.Statistic_Time, TPWorkplane = Toolpath.TPWorkplane, Tolerance = Toolpath.Tolerance, RapidHeight = Toolpath.RapidHeight, SkimHeight = Toolpath.SkimFeed, ToolpathMinX = Toolpath.ToolpathMinX, ToolpathMinY = Toolpath.ToolpathMinY, ToolpathMinZ = Toolpath.ToolpathMinZ, ToolpathMaxX = Toolpath.ToolpathMaxX, ToolpathMaxY = Toolpath.ToolpathMaxY, ToolpathMaxZ = Toolpath.ToolpathMaxZ, FirstLeadInType = Toolpath.FirstLeadInType, SecondLeadInType = Toolpath.SecondLeadInType, FirstLeadOutType = Toolpath.FirstLeadOutType, SecondLeadOutType = Toolpath.SecondLeadOutType, CuttingDistance = Toolpath.CuttingDistance, NCProgName = NCProg }); } } if (Has_NCProgSummary) { //Write the Excel document int Index = oSheetNCProgSummary.Index; oSheetNCProgSummary.Copy(oSheetNCProgSummary, Type.Missing); if (NCProg.Length > 31) { oWB.Sheets[Index].Name = NCProg.Replace("*", "").Substring(0, 30); } else { oWB.Sheets[Index].Name = NCProg; } oSheetNewNCProgSummary = oWB.Sheets[Index]; if (Has_ToolpathDetails) { WriteFiles.CreateExcelFile(NCProg, ToolpathData, ToolData, Project, oSheetNewNCProgSummary, VarsListNCProgSummary, oWB, true, Project_Path, oSheetNewNCProgSummary, NCProgDetails); } else { WriteFiles.CreateExcelFile(NCProg, ToolpathData, ToolData, Project, oSheetNewNCProgSummary, VarsListNCProgSummary, oWB, false, Project_Path, oSheetNewNCProgSummary, NCProgDetails); } } if (Has_ToolpathDetails) { //Write the Excel document WriteFiles.CreateExcelFile(NCProg, ToolpathData, ToolData, Project, oSheetToolpathDetails, VarsListToolpathDetails, oWB, false, Project_Path, oSheetNewNCProgSummary, NCProgDetails); } if (Has_ToolList) { //Write the Excel document int Index = oSheetToolList.Index; oSheetToolList.Copy(oSheetToolList, Type.Missing); if (NCProg.Length > 25) { oWB.Sheets[Index].Name = NCProg.Replace("*", "").Substring(0, 24) + "-Tools"; } else { oWB.Sheets[Index].Name = NCProg + "-Tools"; } oWB.Sheets[Index].Name = NCProg + "-Tools"; oSheetNewToolList = oWB.Sheets[Index]; WriteFiles.CreateExcelFile(NCProg, ToolpathData, ToolData, Project, oSheetNewToolList, VarsListToolList, oWB, false, Project_Path, oSheetNewNCProgSummary, NCProgDetails); } } Project.CombinedNCTPList = NCProgDetails; if (Has_ProjectSummary) { WriteFiles.CreateExcelFile("None", ToolpathData, ToolData, Project, oSheetProjectSummary, VarsListProjectSummary, oWB, true, Project_Path, oSheetProjectSummary, NCProgDetails); } if (Has_ProjectSummaryFull) { WriteFiles.CreateExcelFile("None", ProjectToolpathData, ToolData, Project, oSheetProjectSummaryFull, VarsListProjectSummaryFull, oWB, true, Project_Path, oSheetProjectSummaryFull, NCProgDetails); } if (Has_NCProgSummary) { oSheetNCProgSummary.Delete(); } if (Has_ToolpathDetails) { oSheetToolpathDetails.Delete(); } if (Has_ToolList) { oSheetToolList.Delete(); } oXL.DisplayAlerts = true; oWB.Sheets[1].Activate(); oWB.Save(); MessageBox.Show("SetupSheet exported successfully"); } }
/// <summary> /// Импортировать в Word всех пациентов с переданными id /// </summary> /// <param name="workersKeeper">Класс с воркерами</param> /// <param name="importedPatientIds">Список id пациентов, которых надо импортировать</param> public static void Export(CWorkersKeeper workersKeeper, List <int> importedPatientIds) { _waitForm = new WaitForm(); CultureInfo oldCi = Thread.CurrentThread.CurrentCulture; try { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); _waitForm.Show(); CPatient[] patientList = workersKeeper.PatientWorker.PatientList; // Стартуем Excel-приложение _oxl = new Application(); _waitForm.SetProgress(10); // Создаем новую книгу _owb = _oxl.Workbooks.Add(Missing.Value); if (_owb.Sheets.Count > 2) { _ows = (_Worksheet)_owb.Sheets[3]; _ows.Delete(); } if (_owb.Sheets.Count > 1) { _ows = (_Worksheet)_owb.Sheets[2]; _ows.Delete(); } if (_owb.Sheets.Count > 0) { _ows = (_Worksheet)_owb.Sheets[1]; } else { _ows = (_Worksheet)_owb.Sheets.Add(); } _ows.Cells.WrapText = true; _ows.Cells.VerticalAlignment = 2; _ows.Cells.HorizontalAlignment = 2; _waitForm.SetProgress(20); #region Глобальные заголовки _owr = _ows.get_Range("A1", "AH1"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[1, 1] = "СПИСОК ПАЦИЕНТОВ НА " + CConvertEngine.DateTimeToString(DateTime.Now); _owr = _ows.get_Range("A2", "M2"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[2, 1] = "ОБЩИЕ ДАННЫЕ"; _owr = _ows.get_Range("N2", "T2"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[2, 14] = "ГОСПИТАЛИЗАЦИИ"; _owr = _ows.get_Range("U2", "AE2"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[2, 21] = "Данные по операциям"; _owr = _ows.get_Range("AF2", "AH2"); _owr.MergeCells = true; _owr.Font.Bold = true; _owr.Font.Size = 14; _owr.RowHeight = 30; _owr.HorizontalAlignment = 3; _ows.Cells[2, 32] = "КОНСУЛЬТАЦИИ"; #endregion #region Заголовки _owr = _ows.get_Range("A3", "A3"); _owr.ColumnWidth = 4; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "№"; _owr = _ows.get_Range("B3", "B3"); _owr.ColumnWidth = 15; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "ФИО пациента"; _owr = _ows.get_Range("C3", "C3"); _owr.ColumnWidth = 4; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Возраст"; _owr = _ows.get_Range("D3", "D3"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата рождения"; _owr = _ows.get_Range("E3", "E3"); _owr.ColumnWidth = 21; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Адрес"; _owr = _ows.get_Range("F3", "F3"); _owr.ColumnWidth = 11; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Телефон"; _owr = _ows.get_Range("G3", "G3"); _owr.ColumnWidth = 11; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "E-mail"; _owr = _ows.get_Range("H3", "H3"); _owr.ColumnWidth = 11; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Нозология"; _owr = _ows.get_Range("I3", "I3"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата травмы"; _owr = _ows.get_Range("J3", "J3"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Количество госпитализаций"; _owr = _ows.get_Range("K3", "K3"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Количество консультаций в офисе"; _owr = _ows.get_Range("L3", "L3"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Количество операций"; _owr = _ows.get_Range("M3", "M3"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата поступления"; _owr = _ows.get_Range("N3", "N3"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата выписки"; _owr = _ows.get_Range("O3", "O3"); _owr.ColumnWidth = 5; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "К/д"; _owr = _ows.get_Range("P3", "P3"); _owr.ColumnWidth = 7; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "№ ИБ"; _owr = _ows.get_Range("Q3", "Q3"); _owr.ColumnWidth = 9; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Лечащий врач"; _owr = _ows.get_Range("R3", "R3"); _owr.ColumnWidth = 22; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Диагноз"; _owr = _ows.get_Range("S3", "S3"); _owr.ColumnWidth = 14; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Карты обследования"; _owr = _ows.get_Range("T3", "T3"); _owr.ColumnWidth = 28; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Название операции"; _owr = _ows.get_Range("U3", "U3"); _owr.ColumnWidth = 11; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Тип операции"; _owr = _ows.get_Range("V3", "V3"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата операции"; _owr = _ows.get_Range("W3", "W3"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Время начала операции"; _owr = _ows.get_Range("X3", "X3"); _owr.ColumnWidth = 6; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Время окончания операции"; _owr = _ows.get_Range("Y3", "Y3"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Список хирургов"; _owr = _ows.get_Range("Z3", "Z3"); _owr.ColumnWidth = 12; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Список ассистентов"; _owr = _ows.get_Range("AA3", "AA3"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Анестезиолог"; _owr = _ows.get_Range("AB3", "AB3"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Анестезистка"; _owr = _ows.get_Range("AC3", "AC3"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Операц. мед. сестра"; _owr = _ows.get_Range("AD3", "AD3"); _owr.ColumnWidth = 8; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Санитар"; _owr = _ows.get_Range("AE3", "AE3"); _owr.ColumnWidth = 140; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Ход операции"; _owr = _ows.get_Range("AF3", "AF3"); _owr.ColumnWidth = 10; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Дата консультации в офисе"; _owr = _ows.get_Range("AG3", "AG3"); _owr.ColumnWidth = 50; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Диагноз"; _owr = _ows.get_Range("AH3", "AH3"); _owr.ColumnWidth = 14; _owr.Font.Bold = true; _owr.HorizontalAlignment = 3; _owr.Value2 = "Карты обследования"; #endregion int rowCnt = 4; int n = 1; double progressStep = patientList.Length == 0 ? 0 : 70.0 / patientList.Length; double progress = 30; for (int i = 0; i < patientList.Length; i++) { _waitForm.SetProgress(progress); progress += progressStep; if (!importedPatientIds.Contains(patientList[i].Id)) { continue; } // Общие данные о пациенте _ows.Cells[rowCnt, 1] = n.ToString(); n++; _ows.Cells[rowCnt, 2] = patientList[i].GetFullName(); _ows.Cells[rowCnt, 3] = CConvertEngine.GetAge(patientList[i].Birthday); _ows.Cells[rowCnt, 4] = CConvertEngine.DateTimeToString(patientList[i].Birthday); _ows.Cells[rowCnt, 5] = patientList[i].GetAddress(); _ows.Cells[rowCnt, 6] = patientList[i].Phone; _ows.Cells[rowCnt, 7] = patientList[i].EMail; _ows.Cells[rowCnt, 8] = patientList[i].Nosology; if (workersKeeper.AnamneseWorker.IsExists(patientList[i].Id)) { _ows.Cells[rowCnt, 9] = CConvertEngine.DateTimeToString(workersKeeper.AnamneseWorker.GetByPatientId(patientList[i].Id).TraumaDate); } _ows.Cells[rowCnt, 10] = workersKeeper.HospitalizationWorker.GetCountByPatientId(patientList[i].Id).ToString(); _ows.Cells[rowCnt, 11] = workersKeeper.VisitWorker.GetCountByPatientId(patientList[i].Id).ToString(); _ows.Cells[rowCnt, 12] = workersKeeper.OperationWorker.GetCountByPatientId(patientList[i].Id).ToString(); // Госпитализации int saveRowCnt = rowCnt; foreach (CHospitalization hospitalization in workersKeeper.HospitalizationWorker.GetListByPatientId(patientList[i].Id)) { _ows.Cells[rowCnt, 13] = CConvertEngine.DateTimeToString(hospitalization.DeliveryDate, true); _ows.Cells[rowCnt, 14] = CConvertEngine.DateTimeToString(hospitalization.ReleaseDate); _ows.Cells[rowCnt, 15] = hospitalization.KD; _ows.Cells[rowCnt, 16] = hospitalization.NumberOfCaseHistory; _ows.Cells[rowCnt, 17] = hospitalization.DoctorInChargeOfTheCase; _ows.Cells[rowCnt, 18] = hospitalization.Diagnose; _ows.Cells[rowCnt, 10] = GetExistingCardsInfo(workersKeeper, hospitalization.Id, -1); // Операции foreach (COperation operation in workersKeeper.OperationWorker.GetListByHospitalizationId(hospitalization.Id)) { _ows.Cells[rowCnt, 20] = operation.Name; _ows.Cells[rowCnt, 21] = CConvertEngine.ListToString(operation.OperationTypes, ", "); _ows.Cells[rowCnt, 22] = CConvertEngine.DateTimeToString(operation.DateOfOperation); _ows.Cells[rowCnt, 23] = CConvertEngine.TimeToString(operation.StartTimeOfOperation); _ows.Cells[rowCnt, 24] = CConvertEngine.TimeToString(operation.EndTimeOfOperation); _ows.Cells[rowCnt, 25] = CConvertEngine.ListToString(operation.Surgeons, ", "); _ows.Cells[rowCnt, 26] = CConvertEngine.ListToString(operation.Assistents, ", "); _ows.Cells[rowCnt, 27] = operation.HeAnaesthetist; _ows.Cells[rowCnt, 28] = operation.SheAnaesthetist; _ows.Cells[rowCnt, 29] = operation.ScrubNurse; _ows.Cells[rowCnt, 30] = operation.Orderly; _ows.Cells[rowCnt++, 31] = workersKeeper.OperationProtocolWorker.GetByOperationId(operation.Id).OperationCourse; } if (workersKeeper.OperationWorker.GetCountByHospitalizationId(hospitalization.Id) == 0) { rowCnt++; } } // Консультации rowCnt = saveRowCnt; foreach (CVisit visit in workersKeeper.VisitWorker.GetListByPatientId(patientList[i].Id)) { _ows.Cells[rowCnt, 32] = CConvertEngine.DateTimeToString(visit.VisitDate); _ows.Cells[rowCnt, 33] = visit.Diagnose; _ows.Cells[rowCnt++, 34] = GetExistingCardsInfo(workersKeeper, -1, visit.Id); } int maxCnt = Math.Max( workersKeeper.OperationWorker.GetCountByPatientId(patientList[i].Id), workersKeeper.VisitWorker.GetCountByPatientId(patientList[i].Id)); rowCnt = saveRowCnt + Math.Max(1, maxCnt); } _waitForm.SetProgress(100); } catch (Exception ex) { MessageBox.ShowDialog(ex.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { _waitForm.CloseForm(); if (_oxl != null) { _oxl.Visible = true; _oxl.UserControl = true; if (_owb != null) { Marshal.ReleaseComObject(_owb); _owb = null; } if (_ows != null) { Marshal.ReleaseComObject(_ows); _ows = null; } if (_owr != null) { Marshal.ReleaseComObject(_owr); _owr = null; } Marshal.ReleaseComObject(_oxl); _oxl = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } Thread.CurrentThread.CurrentCulture = oldCi; } }