/// <summary> /// 지장물 정보를 찾는다. /// </summary> /// <param name="Data"></param> /// <returns></returns> public string GetXData(CPipeData Data, DataRow Dr) { string xData = ""; foreach (DataRow item in Data.Data2.Rows) { if (item["측점"].ToString().Trim() == "") { continue; } string[] arr = item["측점"].ToString().Split('+'); double spot = (Convert.ToDouble(arr[0]) * 20) + Convert.ToDouble(arr[1]); double start = Convert.ToDouble(Dr["시작거리"]); double end = Convert.ToDouble(Dr["누가거리"]); if (start <= spot && end > spot) { xData += string.Format("X={0},{1},{2} ", spot, item["INV"], Convert.ToDouble(item["SIZE"]) / 1000); } } return(xData); }
public string GetGData(CPipeData Data, DataRow Dr) { string gData = ""; //포장정보가 없으면 skip if (Data.Data3 == null) { return(""); } //포장 정보가 없으면 SKIP if (Data.Data3.Rows.Count <= 0) { return(""); } foreach (DataRow item in Data.Data3.Rows) { if (item["포장측점"].ToString().Trim() == "") { continue; } string[] arr = item["포장측점"].ToString().Split('+'); double spot = (Convert.ToDouble(arr[0]) * 20) + Convert.ToDouble(arr[1]); double start = Convert.ToDouble(Dr["시작거리"]); double end = Convert.ToDouble(Dr["누가거리"]); if (start <= spot && end > spot) { gData += CMaxerSector.SetData(spot, Convert.ToDouble(Dr["하류지반고"]), item["포장구간"].ToString().ToUpper()); } } return(gData); }
private void MakeFLO(CPipeData PipeData) { DataTable Dt = new DataTable(); Dt.Columns.Add("FROM_LINE"); Dt.Columns.Add("TO_LINE"); Dt.Columns.Add("시작거리"); Dt.Columns.Add("누가거리"); Dt.Columns.Add("누가거리_차이"); Dt.Columns.Add("DATA1"); //0.0000 Dt.Columns.Add("DATA2"); //0.0000 Dt.Columns.Add("F관저고"); //from의 관저고 Dt.Columns.Add("T관저고"); //To의 관저고 Dt.Columns.Add("DATA3"); //0.010 Dt.Columns.Add("지반고"); //from의 지반고 Dt.Columns.Add("하류지반고"); //To의 지반고 Dt.Columns.Add("DATA4"); //0.010 Dt.Columns.Add("관경"); //전, 후 단면이 있을경우 달라짐 Dt.Columns.Add("지장물"); DataTable data = PipeData.ManholeDt; for (int i = 0; i < data.Rows.Count; i++) { if (data.Rows.Count - 1 == i) { //제일 끝 라인은 처리안함 continue; } DataRow dr = Dt.NewRow(); dr["FROM_LINE"] = data.Rows[i]["맨홀"]; dr["TO_LINE"] = data.Rows[i + 1]["맨홀"]; dr["시작거리"] = Convert.ToDouble(data.Rows[i]["누가거리"]); dr["누가거리"] = Convert.ToDouble(data.Rows[i + 1]["누가거리"]); dr["누가거리_차이"] = Convert.ToDouble(data.Rows[i + 1]["누가거리"]) - Convert.ToDouble(data.Rows[i]["누가거리"]); dr["DATA1"] = "0.0000"; dr["DATA2"] = "0.65"; dr["F관저고"] = data.Rows[i]["관저고"]; dr["T관저고"] = data.Rows[i + 1]["관저고"]; dr["지반고"] = data.Rows[i]["지반고"]; dr["하류지반고"] = data.Rows[i + 1]["지반고"]; if (data.Rows[i]["관경"] == data.Rows[i + 1]["관경"]) { dr["관경"] = data.Rows[i]["관경"]; } else { dr["관경"] = data.Rows[i]["T관경"]; } dr["지장물"] = GetXData(PipeData, dr); dr["지장물"] = dr["지장물"] + GetGData(PipeData, dr); Dt.Rows.Add(dr); } PipeData.FLODt = Dt; }
private void simpleButton1_Click(object sender, EventArgs e) { string filename = ""; splashScreenManager1.SplashFormStartPosition = DevExpress.XtraSplashScreen.SplashFormStartPosition.Default; try { filename = CUtil.LoadExcel(spread1); splashScreenManager1.ShowWaitForm(); IWorkbook workbook = spread1.Document; foreach (Worksheet item in workbook.Worksheets) { int nRow = item.GetUsedRange().RowCount; IEnumerable <Cell> searchResult = ExcelDataSourceExtension.FindCell(item, "측점"); string strPos2; string strPos1; string strPos3; foreach (Cell cell in searchResult) { if (cell.ColumnIndex != 1) { continue; } CPipeData Data = new CPipeData(); Data.SheetName = item.Name; Data.Data1Position = "B3:AN3"; Data.Data1RowIndex = 2; Data.Data3Position = "AQ3:AR3"; Data.Data3RowIndex = 2; strPos1 = string.Format("{0}{1}:{2}{3}", "B", 3, "AN", cell.RowIndex - 1); strPos3 = string.Format("{0}{1}:{2}{3}", "AT", 3, "AW", cell.RowIndex - 1); if (nRow == cell.RowIndex + 1) { strPos2 = string.Format("{0}{1}:{2}{3}", "B", cell.RowIndex + 1, "H", nRow); } else { strPos2 = string.Format("{0}{1}:{2}{3}", "B", cell.RowIndex + 1, "H", nRow - 1); } // = string.Format("{0}{1}:{2}{3}", "AQ", 3, "AR", nRow - 1); Data.Data2Position = strPos2; Data.Data2RowIndex = cell.RowIndex; Data.Data1 = ExcelDataSourceExtension.ExcelToDataSource(filename, item, strPos1); Data.Data2 = ExcelDataSourceExtension.ExcelToDataSource(filename, item, strPos2); DataTable extend = ExcelDataSourceExtension.ExcelToDataSource(filename, item, strPos3); SetExtend(Data.Data1, extend); // Data.Data3 = GetDataTable(item, strPos3); //Data.ManholeDt = GetManholeData1(Data.Data1); PipeMngr.Add(Data); } } int nCnt = PipeMngr.Data.Count; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { splashScreenManager1.CloseWaitForm(); } }
/// <summary> /// 막서 데이터로 변환한다. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void simpleButton2_Click(object sender, EventArgs e) { splashScreenManager1.SplashFormStartPosition = DevExpress.XtraSplashScreen.SplashFormStartPosition.Default; splashScreenManager1.ShowWaitForm(); String sheetName = ""; try { IWorkbook workbook = spread1.Document; CPipeDataMngr PipeMngr = new CPipeDataMngr(); ///PipeTool을 처리하기 위한 필드값을 찾는다. /// int n = workbook.Worksheets.Count; foreach (Worksheet item in workbook.Worksheets) { sheetName = item.Name; //sheet에 (H) 가 있으면 skip if (item.Name.Contains("H") == true) { continue; } CPipeData Data = new CPipeData(); Data.SheetName = item.Name; Data.Data1Position = "B3:AN3"; Data.Data1RowIndex = 2; Data.Data3Position = "AQ3:AR3"; Data.Data3RowIndex = 2; //Data2의 시작 위치를 찾아볼까 SearchOptions options = new SearchOptions(); options.SearchBy = SearchBy.Columns; options.SearchIn = SearchIn.Values; options.MatchEntireCellContents = true; //item.Search("측점", options); //worksheet의 유효 데이터 Row를 구한다. int nRow = item.GetUsedRange().RowCount; string strPos2; string strPos1; string strPos3; // Data.Data3 = GetDataTable(item, Data.Data3Position); IEnumerable <Cell> searchResult = item.Search("측점", options); foreach (Cell cell in searchResult) { if (cell.ColumnIndex != 1) { continue; } strPos1 = string.Format("{0}{1}:{2}{3}", "B", 3, "AN", cell.RowIndex - 1); if (nRow == cell.RowIndex + 1) { strPos2 = string.Format("{0}{1}:{2}{3}", "B", cell.RowIndex + 1, "H", nRow); } else { strPos2 = string.Format("{0}{1}:{2}{3}", "B", cell.RowIndex + 1, "H", nRow - 1); } // = string.Format("{0}{1}:{2}{3}", "AQ", 3, "AR", nRow - 1); Data.Data2Position = strPos2; Data.Data2RowIndex = cell.RowIndex; Data.Data1 = GetDataTable(item, strPos1); Data.Data2 = GetDataTable(item, strPos2); // Data.Data3 = GetDataTable(item, strPos3); Data.ManholeDt = GetManholeData1(Data.Data1); } ////포장측점이 있는지 찾는다. //IEnumerable<Cell> searchResult2 = item.Search("포장측점", options); //foreach (Cell cell in searchResult2) //{ // strPos3 = string.Format("{0}{1}:{2}{3}", "AQ", 3, "AR", nRow - 1); // Data.Data3 = GetDataTable(item, strPos3); //} MakeFLO(Data); PipeMngr.Add(Data); } DataTable MaxerDt = PipeMngr.GetMaxerInputData(); adGridView1.PopulateColumns(MaxerDt); gridControl1.DataSource = MaxerDt; } catch (Exception ex) { MessageBox.Show(ex.Message); MessageBox.Show(sheetName); } finally { splashScreenManager1.CloseWaitForm(); } }