Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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();
            }
        }
Exemple #5
0
        /// <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();
            }
        }