async void OutputPPT()
        {
            double limit = 0;

            if (!double.TryParse(filterThresholdTextBox.Text, out limit))
            {
                toolStripStatusLabel.Text = "请输入正确的数字";
                return;
            }
            SaveFileDialog fd = new SaveFileDialog();

            fd.InitialDirectory = "d:/";
            fd.Title            = "请选择输出PPT的文件路径";
            fd.Filter           = "PowerPoint files(*.pptx)|*.pptx;";
            if (fd.ShowDialog() == DialogResult.OK)
            {
                outputPPTFilename = fd.FileName;
            }
            else
            {
                return;
            }
            toolStripStatusLabel.Text = "正在过滤数据";
            sp.RunFilter(ShiftingReport.GetLessThanFilter(limit));
            sp.RunFilter(ShiftingReport.nameFilter);
            toolStripStatusLabel.Text = "正在导出PPT";
            ReportToChart tc = new ReportToChart(outputPPTFilename);
            await tc.OutputAsync(sp, outputPPTFilename);
        }
        async void OutputExcel()
        {
            SaveFileDialog fd = new SaveFileDialog();

            fd.InitialDirectory = "d:/";
            fd.Title            = "请选择输出Excel的文件路径";
            fd.Filter           = "PowerPoint files(*.xlsx)|*.xlsx;";
            if (fd.ShowDialog() == DialogResult.OK)
            {
                double limit = 0;
                if (!double.TryParse(filterThresholdTextBox.Text, out limit))
                {
                    toolStripStatusLabel.Text = "请输入正确的数字";
                    return;
                }
                toolStripStatusLabel.Text = "正在过滤数据";
                sp.RunFilter(ShiftingReport.GetLessThanFilter(limit));
                sp.RunFilter(ShiftingReport.nameFilter);
                toolStripStatusLabel.Text = "正在导出Excel";
                await sp.ExportExcelGroupByRegionAsync("d:/test.xlsx");

                toolStripStatusLabel.Text = "导出成功";
            }
        }