private void btnExport_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; if (pathtosave.Length == 0) { Cursor.Current = Cursors.Default; MessageBox.Show("Please set the location to save the files before exporting."); } if (lstSelectedSamples.ItemCount > 0) { //only selected samples for batch Parallel.ForEach((List <string>)lstSelectedSamples.DataSource, samp => { ReportDataVM rpData = new ReportDataVM(lstSelected.SelectedItem.ToString(), samp, "I"); rpData.LoadData(); rpData.BuildReportData(); bool successful = CreateAndSaveFile(rpData); }); Cursor.Current = Cursors.Default; MessageBox.Show("Export is complete"); } else if (lstSelected.ItemCount > 0) { ConcurrentDictionary <string, List <ReportDataVM> > batchRpt = new ConcurrentDictionary <string, List <ReportDataVM> >(); //all selected batches with their samples. foreach (string batc in Selectedbatches.Keys) { Parallel.ForEach(Selectedbatches[batc], item => { ReportDataVM rpData = new ReportDataVM(batc, item, "I"); rpData.LoadData(); rpData.BuildReportData(); if (batchRpt.ContainsKey(batc)) { batchRpt[batc].Add(rpData); } else { List <ReportDataVM> rpt = new List <ReportDataVM>(); rpt.Add(rpData); batchRpt.TryAdd(batc, rpt); } //bool successful = CreateAndSaveFile(rpData); }); bool successful = CreateAndSaveFile(batchRpt, batc); } Cursor.Current = Cursors.Default; MessageBox.Show("Export is complete"); } else { Cursor.Current = Cursors.Default; MessageBox.Show("No Batches or Samples have been selected."); } }
private bool CreateAndSaveFile(ReportDataVM reportDataVM) { Excel.Application appExcel; Excel._Workbook wrkbook; Excel.Workbooks objBooks; Excel.Sheets objSheets; Excel._Worksheet objSheet; Excel.Range range; //Excel.Font font = null; try { // Instantiate Excel and start a new workbook. appExcel = new Excel.Application(); objBooks = appExcel.Workbooks; wrkbook = objBooks.Add(); objSheets = wrkbook.Worksheets; objSheet = (Excel.Worksheet)objSheets.get_Item(1); objSheet.Cells[1, 1] = $"Sample ID"; objSheet.get_Range("B1", "B1").ColumnWidth = 15; objSheet.Cells[1, 2] = $"Serum Date"; objSheet.get_Range("C1", "C1").ColumnWidth = 30; objSheet.Cells[1, 3] = $"Strong MFI (>5000) Alleles"; objSheet.get_Range("D1", "D1").ColumnWidth = 30; objSheet.Cells[1, 4] = $"Mod MFI (2000-5000) Alleles"; objSheet.get_Range("E1", "E1").ColumnWidth = 30; objSheet.Cells[1, 5] = $"Weak MFI (700-2000) Alleles"; objSheet.get_Range("F1", "F1").ColumnWidth = 30; objSheet.Cells[1, 6] = $"Strong MFI (>5000) Serology"; objSheet.get_Range("G1", "G1").ColumnWidth = 30; objSheet.Cells[1, 7] = $"Mod MFI (2000-5000) Serology"; objSheet.get_Range("H1", "H1").ColumnWidth = 30; objSheet.Cells[1, 8] = $"Weak MFI (700-2000) Serology"; objSheet.get_Range("I1", "I1").ColumnWidth = 30; objSheet.Cells[1, 9] = $"A, B, DR MFI (3500-5000) Serology"; objSheet.Range["A1:A9"].Style.Font.Name = "Calbri"; objSheet.Range["A1:A9"].Style.Font.Size = 8; objSheet.Range["A1:A9"].Style.WrapText = true; objSheet.Range["A1:A9"].Style.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; objSheet.Range["A1:A9"].Style.VerticalAlignment = Excel.XlVAlign.xlVAlignTop; objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous; objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous; objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous; objSheet.Range["A1:I2"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous; objSheet.Range["A1:I2"].Borders.Color = Color.Black; objSheet.Cells[2, 1] = reportDataVM.reportdb.SampleID; objSheet.Cells[2, 2] = reportDataVM.reportdb.SerumDate; objSheet.Cells[2, 3] = reportDataVM.reportdb.StrongAlleleFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.StrongAlleleFinal; objSheet.Cells[2, 4] = reportDataVM.reportdb.ModAllelesFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.ModAllelesFinal; objSheet.Cells[2, 5] = reportDataVM.reportdb.WeakAllelesFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.WeakAllelesFinal; objSheet.Cells[2, 6] = reportDataVM.reportdb.StrongSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.StrongSerologyFinal; objSheet.Cells[2, 7] = reportDataVM.reportdb.ModSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.ModSerologyFinal; objSheet.Cells[2, 8] = reportDataVM.reportdb.WeakSerologyFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.WeakSerologyFinal; objSheet.Cells[2, 9] = reportDataVM.reportdb.UnacceptableSeroFinal.Trim().Length == 0 ? "N/A" : reportDataVM.reportdb.UnacceptableSeroFinal; if (!pathtosave.EndsWith("\\")) { pathtosave = pathtosave + "\\"; } wrkbook.SaveAs($"{pathtosave}{reportDataVM.sessionid}_{reportDataVM.sampleid}.xlsx"); appExcel.Quit(); GC.Collect(); Marshal.FinalReleaseComObject(objSheets); Marshal.FinalReleaseComObject(objSheet); Marshal.FinalReleaseComObject(objBooks); Marshal.FinalReleaseComObject(wrkbook); Marshal.FinalReleaseComObject(appExcel); //dispose of objects. appExcel = null; wrkbook = null; objBooks = null; objSheet = null; objSheets = null; range = null; return(true); } catch (Exception ex) { unsuccessfuleBatches.Add($"{reportDataVM.sessionid} : {reportDataVM.sampleid}"); return(false); } }
public async Task <ReportDataOutput> GetReportData() { try { int periodId = 1; _logger.LogInformation("اجرای متد بازیابی اطلاعات کارنامه"); var personData = await _personArzeshyabiService.GetPersonArzeshyabiByPersonCodeAsync(periodId, 13137); //var result = _mapper.Map<Person, ReportDataVM>(personData); ReportDataVM dataVM = new ReportDataVM(); dataVM.PersonCode = personData.PersonInBranch.Person.PersonCode; dataVM.FirstName = personData.PersonInBranch.Person.FirstName; dataVM.LastName = personData.PersonInBranch.Person.LastName; dataVM.BirthDate = personData.PersonInBranch.Person.BirthDate; dataVM.EmployeeDate = personData.PersonInBranch.Person.EmployeeDate; dataVM.StudyBranch = personData.PersonInBranch.Person.StudyBranch; dataVM.StudyJob = personData.PersonInBranch.Person.StudyJob; dataVM.Grade = personData.PersonInBranch.Person.Grade; dataVM.BranchCode = personData.PersonInBranch.Branch.BranchCode; dataVM.BranchName = personData.PersonInBranch.Branch.BranchName; dataVM.ZoneName = personData.PersonInBranch.Branch.ZoneName; dataVM.Arzyab1 = personData.Arzyab1.ToString(); dataVM.Arzyab2 = personData.Arzyab2.ToString(); dataVM.MaghtaArzeshyabi = personData.ArzyabiDate; var reportTaData = await _personScoreService.GetPersonScoreByPersonCodeAsync(periodId, personData.PersonInBranch.Person.PersonCode); List <ReportTaDataVM> listTa = new List <ReportTaDataVM>(); foreach (var item in reportTaData) { ReportTaDataVM ta = new ReportTaDataVM(); ta.ScoreIndexTitle = item.ScoreSubIndex.ScoreIndex.Title; ta.ScoreSubIndexTitle = item.ScoreSubIndex.Title; ta.Value = item.Value; ta.Score = item.Score; ta.RankInBranch = item.RankInBranch; ta.RankInZone = item.RankInZone; ta.RankInBank = item.RankInBank; listTa.Add(ta); } dataVM.ReportTaDataList = listTa; var reportData = await _reportService.GetReportByPersonCodeAsync(periodId, personData.PersonInBranch.Person.PersonCode); foreach (var item in reportData) { var txt = await _meritPayFactorService.GetMeritPayByIdAsync(item.MeritPayFactorId); switch (txt.Title) { case "تراکنش های عملکردی": dataVM.TaScore = item.Score; dataVM.TaRankInBranch = item.RankInBranch; dataVM.TaRankInZone = item.RankInZone; dataVM.TaRankInBank = item.RankInBank; break; case "امتیاز گروهی": dataVM.GroupScore = item.Score; dataVM.GroupRankInBranch = item.RankInBranch; dataVM.GroupRankInZone = item.RankInZone; dataVM.GroupRankInBank = item.RankInBank; break; case "ارزشیابی فردی": dataVM.ArzeshScore = item.Score; dataVM.ArzeshRankInBranch = item.RankInBranch; dataVM.ArzeshRankInZone = item.RankInZone; dataVM.ArzeshRankInBank = item.RankInBank; break; default: break; } } return(new ReportDataOutput(true, dataVM)); } catch (Exception ex) { _logger.LogError(ex, "خطا در بازیابی اطلاعات کارنامه"); return(new ReportDataOutput(false, null, "خطا در بازیابی اطلاعات کارنامه")); } }