private void sbtnGetInfo_Click(object sender, EventArgs e) { IList <DevExpress.Spreadsheet.Range> selectedRange = spreadsheetControl1.GetSelectedRanges(); DevExpress.Spreadsheet.Range curentRange = selectedRange[0]; if (!(curentRange.TopRowIndex == curentRange.BottomRowIndex && curentRange.LeftColumnIndex == curentRange.RightColumnIndex)) { //MessageBox.Show(curentRange.TopRowIndex.ToString()); SearchOptions option = new SearchOptions(); option.SearchBy = SearchBy.Columns; option.SearchIn = SearchIn.Values; option.MatchEntireCellContents = true; option.MatchCase = false; IEnumerable <Cell> searchResult; #region Tìm các cột // Tìm cột Crew ID searchResult = curentRange.Search("CREW ID", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("CREWID", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Crew ID trong vùng dữ liệu được chọn"); return; } } int colcrewid = searchResult.First().LeftColumnIndex; int colflightid = colcrewid + 1; int colnote = colcrewid + 2; // Dòng dữ liệu đầu tiên int firstRow = searchResult.First().TopRowIndex + 1; curentRange.Worksheet.Cells[firstRow - 1, colflightid].Value = "FLight ID"; curentRange.Worksheet.Cells[firstRow - 1, colnote].Value = "Note"; curentRange.Worksheet.Cells[firstRow - 1, colnote + 1].Value = "Database"; int colds, cols; colds = colnote + 2; cols = colds + 2; //curentRange.Worksheet.Cells[firstRow - 1, colds].Value = "DS ID"; //curentRange.Worksheet.Cells[firstRow - 1, colds+1].Value = "DS Name"; //curentRange.Worksheet.Cells[firstRow - 1, cols].Value = "S ID"; //curentRange.Worksheet.Cells[firstRow - 1, cols + 1].Value = "S Name"; // Tìm cột Flight Date searchResult = curentRange.Search("Flight Date", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("FlightDate", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Flight Date trong vùng dữ liệu được chọn"); return; } } int colfltdate = searchResult.First().LeftColumnIndex; // Tìm cột Route searchResult = curentRange.Search("Route", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Route trong vùng dữ liệu được chọn"); return; } int colroute = searchResult.First().LeftColumnIndex; // Tìm cột FlightNo Flight No searchResult = curentRange.Search("FlightNo.", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("Flight No.", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột FlightNo trong vùng dữ liệu được chọn"); return; } } int colfltno = searchResult.First().LeftColumnIndex; // Tìm cột CREW searchResult = curentRange.Search("CREW", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("CREW NAME", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột CREW trong vùng dữ liệu được chọn"); return; } } int colcrew = searchResult.First().LeftColumnIndex; // Tìm cột KPT Revenue searchResult = curentRange.Search("KPT \nRevenue", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("KPT\n Revenue", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("KPT\nRevenue", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột KPT Revenue trong vùng dữ liệu được chọn"); return; } } } int colrevenue = searchResult.First().LeftColumnIndex; // Tìm cột Discrepancy searchResult = curentRange.Search("Discrepancy", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Discrepancy trong vùng dữ liệu được chọn"); return; } int coldiscrepancy = searchResult.First().LeftColumnIndex; // Tìm cột Cashier Collected //string test = curentRange.Worksheet.Cells[1, 4].Value.ToString(); searchResult = curentRange.Search("Cashier\n Collected", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("Cashier \nCollected", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("Cashier\nCollected", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Cashier Collected trong vùng dữ liệu được chọn"); return; } } } int colcashier = searchResult.First().LeftColumnIndex; // Tìm cột Card Settlement searchResult = curentRange.Search("Card \nSettlement", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("Card\n Settlement", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("Card\nSettlement", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột Card Settlement trong vùng dữ liệu được chọn"); return; } } } int colcard = searchResult.First().LeftColumnIndex; // Tìm cột REMARK searchResult = curentRange.Search("REMARK", option); if (searchResult.Count() == 0) { searchResult = curentRange.Search("REMARKS", option); if (searchResult.Count() == 0) { MessageBox.Show("Không tìm thấy cột REMARK trong vùng dữ liệu được chọn"); return; } } int colremark = searchResult.First().LeftColumnIndex; #endregion // Dòng và cột cuối của Range int lastcol = curentRange.RightColumnIndex; int lastrow = curentRange.BottomRowIndex; if (lastrow < firstRow) { MessageBox.Show("Vùng chọn không có dữ liệu"); return; } HREntities hr = new HREntities(); ERMSEntities1 cb = new ERMSEntities1(); //string filesource = @"\\10.100.8.108\phanbay\doantv\ddtvvfp6\solieu\lbaytv2.dbf"; string manv, hoten, tentv, route, flyno, remark, nametv = ""; double Discrepancy, KPTRevenue, CashierCollected, CardSettlement; DateTime flydate; int first_space, second_space, tt_ten, id_cb = -1; List <int> lstflightID = new List <int>(); bool flag_add; try { for (int i = firstRow; i <= lastrow; i++) { flag_add = false; var codetv = curentRange.Worksheet.Cells[i, colcrewid].Value; if (!codetv.IsEmpty) { manv = codetv.ToString().PadLeft(4, '0'); tentv = curentRange.Worksheet.Cells[i, colcrew].Value.ToString(); } #region Tìm Crewid else //Tìm Manv trong nhân sự dựa theo tên { tentv = curentRange.Worksheet.Cells[i, colcrew].Value.ToString().Trim(); manv = ""; //Có khoảng trắng có thể là tên có số hoặc cả họ tên if (tentv.Contains(" ")) { first_space = tentv.IndexOf(" "); second_space = tentv.IndexOf(" ", first_space + 1); if (second_space < 0) // Chỉ một khoản trằn có thể là tên và số trùng tên. Tìm trong Nhân sự theo hướng đó. { var ns = hr.HoSoGocs.Where(x => x.Tenkd.Trim().ToUpper() == tentv.Trim().ToUpper()).FirstOrDefault(); if (ns != null) { curentRange.Worksheet.Cells[i, colcrewid].Value = ns.mans.Trim(); manv = ns.mans.Trim(); curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID"; } else { curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID"; } } else //Có khoảng trắng thứ hai ==> Có phần họ và tên đệm { string sotrung; sotrung = tentv.Substring(first_space + 1, second_space - first_space - 1); //Kiểm tra xem phải số trùng tên không if (Int32.TryParse(sotrung, out tt_ten)) { hoten = tentv.Substring(second_space + 1).Trim() + " " + tentv.Substring(0, second_space); } else { hoten = tentv.Substring(first_space + 1).Trim() + " " + tentv.Substring(0, first_space); } var ns = hr.HoSoGocs.Where(x => x.tenkodau.Trim().ToUpper() == hoten.ToUpper()).FirstOrDefault(); if (ns != null) { curentRange.Worksheet.Cells[i, colcrewid].Value = ns.mans.Trim(); manv = ns.mans.Trim(); curentRange.Worksheet.Cells[i, colnote].Value = "KPT không có CrewID"; } else { curentRange.Worksheet.Cells[i, colnote].Value = "Không tìm được CrewID"; } } } // Nhập mỗi tên không có số trùng tên else { curentRange.Worksheet.Cells[i, colnote].Value = "Không thể tìm được Crew ID"; } } #endregion #region Tìm Chuyến Bay if (curentRange.Worksheet.Cells[i, colfltdate].Value.IsDateTime) { ; } flydate = Convert.ToDateTime(curentRange.Worksheet.Cells[i, colfltdate].Value.ToString()); route = curentRange.Worksheet.Cells[i, colroute].Value.ToString(); flyno = "VN" + curentRange.Worksheet.Cells[i, colfltno].Value.ToString(); var flight = cb.CR_FlightInfo.Where(x => x.Routing == route && x.FlightNo == flyno && x.Date == flydate.Date).FirstOrDefault(); if (flight != null) { curentRange.Worksheet.Cells[i, colflightid].Value = flight.FlightID; id_cb = flight.FlightID; var fltid = lstflightID.Where(x => x == id_cb).FirstOrDefault(); if (fltid > 0) { flag_add = true; } } //Tìm DS và S var totv = cb.CR_Flight_Crew.Where(x => x.FlightID == id_cb && x.IsDeleted == false && x.Dutyfree != null && x.Dutyfree != "").OrderBy(z => z.Dutyfree).ToList(); if (totv != null) { int k = 0; foreach (var tv in totv) { var hs = hr.HoSoGocs.Where(x => x.mans.Trim() == tv.CrewID).FirstOrDefault(); if (hs.mans.Trim() == manv) { curentRange.Worksheet.Cells[i, colcrewid].Font.Color = System.Drawing.Color.Cyan; } if (hs != null) { nametv = hs.tenkodau.Trim().ToUpper(); } curentRange.Worksheet.Cells[i, colds + k].Value = tv.CrewID; curentRange.Worksheet.Cells[i, colds + k + 1].Value = nametv; curentRange.Worksheet.Cells[i, colds + k + 2].Value = tv.Dutyfree; k = k + 3; //if(tv.Dutyfree=="S"){ // curentRange.Worksheet.Cells[i,cols].Value=tv.CrewID; // curentRange.Worksheet.Cells[i,cols+1].Value=nametv; //} //else // if(tv.Dutyfree=="DS" || tv.Dutyfree=="D"){ // curentRange.Worksheet.Cells[i,colds].Value=tv.CrewID; // curentRange.Worksheet.Cells[i,colds+1].Value=nametv; // } } } else { curentRange.Worksheet.Cells[i, colnote].Value = "Không tìm được chuyến bay tương ứng"; id_cb = -1; } #endregion #region Lấy thông tin khác if (!curentRange.Worksheet.Cells[i, coldiscrepancy].Value.IsEmpty) { Discrepancy = Convert.ToDouble(curentRange.Worksheet.Cells[i, coldiscrepancy].Value.ToString()); } else { Discrepancy = 0.0; } if (!curentRange.Worksheet.Cells[i, colrevenue].Value.IsEmpty) { KPTRevenue = Convert.ToDouble(curentRange.Worksheet.Cells[i, colrevenue].Value.ToString()); } else { KPTRevenue = 0.0; } if (!curentRange.Worksheet.Cells[i, colcashier].Value.IsEmpty) { CashierCollected = Convert.ToDouble(curentRange.Worksheet.Cells[i, colcashier].Value.ToString()); } else { CashierCollected = 0.0; } if (!curentRange.Worksheet.Cells[i, colcard].Value.IsEmpty) { CardSettlement = Convert.ToDouble(curentRange.Worksheet.Cells[i, colcard].Value.ToString()); } else { CardSettlement = 0.0; } if (curentRange.Worksheet.Cells[i, colremark].Value.IsEmpty) { remark = ""; } else { remark = curentRange.Worksheet.Cells[i, colremark].Value.ToString(); // ?? curentRange.Worksheet.Cells[i, colremark].Value.ToString(),""; } #endregion #region Ghi vào CSDL if (id_cb > 0) { var dt = cb.CR_Flight_Dutyfree.Where(x => x.FlightID == id_cb).FirstOrDefault(); if (dt != null) // Có rồi ==> Cập nhật Total và KPTinfo { if (!flag_add) { if (Discrepancy > 0) { dt.Total = KPTRevenue; } else { dt.Total = CashierCollected + CardSettlement; } } else if (Discrepancy > 0) { dt.Total = dt.Total + KPTRevenue; } else { dt.Total = dt.Total + CashierCollected + CardSettlement; } dt.KPTinfo = "Flyno=" + flyno.Trim() + " Date=" + flydate.Date.ToString("dd/MM/yyyy") + " Route=" + route + " Discrepancy=" + Discrepancy.ToString() + " KPT Revenue=" + KPTRevenue.ToString() + " Cashier Collected=" + CashierCollected.ToString() + " Card Settlement " + CardSettlement.ToString() + " Crewid=" + manv + " Crewname=" + tentv + " Remark=" + remark; dt.Modified = DateTime.Now; dt.Modifier = "liembt"; dt.Modifierid = "1067"; cb.SaveChanges(); //curentRange.Worksheet.Cells[i, colnote + 1].Value = "Update"; } else //Chưa có ==> Add vào { CR_Flight_Dutyfree newdt = new CR_Flight_Dutyfree(); newdt.FlightID = id_cb; if (Discrepancy > 0) { newdt.Total = KPTRevenue; } else { newdt.Total = CashierCollected + CardSettlement; } newdt.KPTinfo = "Flyno=" + flyno.Trim() + " Date=" + flydate.Date.ToString("dd/MM/yyyy") + " Route=" + route + " Discrepancy=" + Discrepancy.ToString() + " KPT Revenue=" + KPTRevenue.ToString() + " Cashier Collected=" + CashierCollected.ToString() + " Card Settlement " + CardSettlement.ToString() + " Crewid=" + manv + " Crewname=" + tentv + " Remark=" + remark; newdt.Created = DateTime.Now; newdt.Creator = "liembt"; newdt.Creatorid = "1067"; cb.CR_Flight_Dutyfree.Add(newdt); cb.SaveChanges(); //curentRange.Worksheet.Cells[i, colnote + 1].Value = "Insert"; } } else { curentRange.Worksheet.Cells[i, colnote + 1].Value = ""; } #endregion } #region Export Excel Kết quả xử lý string filename; filename = lblFilename.Text.Substring(0, lblFilename.Text.IndexOf(".")) + "_kqxl.xlsx"; IWorkbook workbook = spreadsheetControl1.Document; using (FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite)) { workbook.SaveDocument(stream, DocumentFormat.Xlsx); } #endregion } //catch(Exception ex){ // //MessageBox.Show(ex.Message); //} finally{ hr.Dispose(); cb.Dispose(); } } else { MessageBox.Show("Vui lòng chọn vùng dữ liệu"); } MessageBox.Show("Complete!"); }