Beispiel #1
0
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="DataSheet">图表对应的数据工作表</param>
            /// <param name="DrawingChart">Excel图形所在的Chart对象</param>
            /// <param name="ParentApp">此图表所在的Excel类的实例对象</param>
            /// <param name="DateSpan">此图表的TimeSpan跨度</param>
            /// <param name="type">此图表的类型,则枚举DrawingType提供</param>
            ///  <param name="CanRoll">是图表是否可以滚动,即是动态图还是静态图</param>
            /// <param name="date_ColNum">此测斜点的监测数据工作表中的每一天与其在工作表中对应的列号,
            /// 以监测数据的日期key索引数据所在列号item</param>
            /// <param name="usedRg">监测曲线的数据范围,此Range对象中,
            /// 包括此工作表的UsedRange中的第一列,即深度的数据;但是不包括第一行的日期数据</param>
            /// <param name="Info">记录数据信息的文本框</param>
            /// <param name="FirstSeriesTag">第一条数据系列对应的Tag信息</param>
            /// <param name="ProcessRegionData">在施工进度工作表中,每一个基坑区域相关的各种信息,比如区域名称,区域的描述,
            /// 区域数据的Range对象,区域所属的基坑ID及其ID的数据等</param>
            /// <remarks></remarks>
            public ClsDrawing_Mnt_Incline(Excel.Worksheet DataSheet, Excel.Chart DrawingChart, Cls_ExcelForMonitorDrawing ParentApp,
                                          DateSpan DateSpan, DrawingType type, bool CanRoll, TextFrame2 Info, MonitorInfo DrawingTag,
                                          MntType MonitorType, Dictionary <DateTime, int> date_ColNum, Excel.Range usedRg,
                                          SeriesTag_Incline FirstSeriesTag, clsData_ProcessRegionData ProcessRegionData = null)
                : base(DataSheet, DrawingChart, ParentApp, type, CanRoll, Info, DrawingTag, MonitorType,
                       DateSpan, new clsDrawing_Mnt_RollingBase.SeriesTag(FirstSeriesTag.series, FirstSeriesTag.ConstructionDate))
            {
                //
                // --------------------------------------------
                try
                {
                    ClsDrawing_Mnt_Incline with_1 = this;
                    with_1.P_rgMntData = usedRg; //'包括第一列,但是不包括第一行的日期。
                    Excel.Range colRange = usedRg.Columns[1] as Excel.Range;
                    with_1.F_YValues   = ExcelFunction.ConvertRangeDataToVector <Single>(colRange);
                    with_1.Information = Info;
                    with_1._ExcavationDepth_lineAndTextbox = FirstSeriesTag;
                    with_1.F_dicDateAndColumnNumber        = date_ColNum;
                    with_1.P_ProcessRegionData             = ProcessRegionData;

                    with_1._inclineTopElevaion = Project_Expo.InclineTopElevaion;
                    // ----- 集合数据的记录
                    with_1.F_DicSeries_Tag[(int)LowIndexOfObjectsInExcel.SeriesInSeriesCollection] = FirstSeriesTag;

                    // -----对图例进行更新---------
                    //Call LegendRefresh(List_HasCurve)
                }
                catch (Exception ex)
                {
                    MessageBox.Show("构造测斜曲线图出错。" + "\r\n" + ex.Message + "\r\n" +
                                    ex.TargetSite.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
Beispiel #2
0
        private void ExportToWord(Application WdApp, Drawings_For_Output selectedDrawings)
        {
            Word.Range rg = WdDoc.Range(Start: 0);
            //在写入标题部分内容时所占的进度
            int intProgressForStartPart = 10;
            //一共要导出的元素个数
            int intElementsCount = selectedDrawings.Count();
            //每一个导出的元素所占的进度
            float sngUnit = (float)((double)(100 - intProgressForStartPart) / intElementsCount);
            //实时的进度值
            int intProgress = intProgressForStartPart;

            try
            {
                //写入标题项
                Export_OverView(ref rg);
            }
            catch (Exception)
            {
                MessageBox.Show("写入概述部分出错,但可以继续工作。", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            finally
            {
                APPLICATION_MAINFORM.MainForm.ShowProgressBar_Continue(intProgressForStartPart);
            }

            // ------------- 取消绘图窗口的禁用 ------------------
            //一定要在将绘图窗口中的图形导出到Word之前取消窗口的禁用,
            //否则的话,当调用这些窗口的Application属性时,就会出现报错:应用程序正在使用中。
            foreach (IntPtr H in WindowHandles)
            {
                APIWindows.EnableWindow(H, true);
            }

            //输出每一个选定的图形
            // ------------- 开挖平面图 ------------------
            try
            {
                ClsDrawing_PlanView D = selectedDrawings.PlanView;
                if (D != null)
                {
                    Page page = D.Page;
                    //
                    NewLine(rg, ParagraphStyle.Title_2);
                    rg.InsertAfter("开挖平面图:");
                    //
                    Export_VisioPlanview(page, ref rg);
                    //
                    intProgress += (int)sngUnit;
                    APPLICATION_MAINFORM.MainForm.ShowProgressBar_Continue(intProgress);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    "导出Visio开挖平面图出错,但可以继续工作。" + "\r\n" + ex.Message + "\r\n" + "报错位置:" + ex.TargetSite.Name, "Warning",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            // ------------- 剖面标高图 -------------------------
            try
            {
                ClsDrawing_ExcavationElevation D = selectedDrawings.SectionalView;
                if (D != null)
                {
                    //
                    NewLine(rg, ParagraphStyle.Title_2);
                    rg.InsertAfter("开挖剖面图:");
                    //
                    Export_ExcelChart(D.Chart, ref rg);
                    //
                    intProgress += (int)sngUnit;
                    APPLICATION_MAINFORM.MainForm.ShowProgressBar_Continue(intProgress);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    "导出Excel开挖剖面图出错,但可以继续工作。" + "\r\n" + ex.Message + "\r\n" + "报错位置:" + ex.TargetSite.Name, "Warning",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            // ---------------------- 监测曲线图 --------------------
            Chart cht = default(Chart);

            foreach (ClsDrawing_Mnt_Base Drawing in selectedDrawings.MntDrawings)
            {
                try
                {
                    switch (Drawing.Type)
                    {
                    // ------------- 测斜曲线图 ---------------------------------------------------
                    case DrawingType.Monitor_Incline_Dynamic:
                        ClsDrawing_Mnt_Incline D_1 = (ClsDrawing_Mnt_Incline)Drawing;
                        cht = D_1.Chart;
                        //
                        NewLine(rg, ParagraphStyle.Title_2);
                        rg.InsertAfter(D_1.Chart_App_Title);
                        //
                        Export_ExcelChart(cht, ref rg);
                        break;

                    // ------------- 动态监测曲线图 ---------------------------------------------
                    case DrawingType.Monitor_Dynamic:
                        ClsDrawing_Mnt_OtherDynamics D_2 = (ClsDrawing_Mnt_OtherDynamics)Drawing;
                        cht = D_2.Chart;

                        //
                        NewLine(rg, ParagraphStyle.Title_2);
                        rg.InsertAfter(D_2.Chart_App_Title);

                        Export_ExcelChart(cht, ref rg);
                        break;

                    // ------------- 静态监测曲线图 ---------------------------------------------
                    case DrawingType.Monitor_Static:
                        ClsDrawing_Mnt_Static D_3 = (ClsDrawing_Mnt_Static)Drawing;
                        cht = D_3.Chart;
                        //
                        NewLine(rg, ParagraphStyle.Title_2);
                        rg.InsertAfter(D_3.Chart_App_Title);

                        Export_ExcelChart(cht, ref rg);
                        break;

                    // ------------- 静态监测曲线图 ---------------------------------------------
                    case DrawingType.Monitor_Incline_MaxMinDepth:
                        ClsDrawing_Mnt_MaxMinDepth D = (ClsDrawing_Mnt_MaxMinDepth)Drawing;
                        cht = D.Chart;
                        //
                        NewLine(rg, ParagraphStyle.Title_2);
                        rg.InsertAfter(D.Chart_App_Title);

                        Export_ExcelChart(cht, ref rg);
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("导出监测曲线图\"" + Drawing.Chart_App_Title.ToString() + "\"出错,但可以继续工作。" +
                                    "\r\n" + ex.Message + "\r\n" + "报错位置:" +
                                    ex.TargetSite.Name, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                finally
                {
                    intProgress += (int)sngUnit;
                    APPLICATION_MAINFORM.MainForm.ShowProgressBar_Continue(intProgress);
                }
            }
        }