예제 #1
0
        // TODO: localize filter?
        public void WriteStatsReport(string title, string cap1, string cap2, List <StatsItem> vals)
        {
#if !NETSTANDARD
            if (vals == null)
            {
                return;
            }

            string fileName = AppHost.StdDialogs.GetSaveFile("", "", "Excel files (*.xls)|*.xls", 1, "xls", "");
            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }

            IProgressController progress = AppHost.Progress;
            try
            {
                int rowsCount = vals.Count;
                progress.ProgressInit(LangMan.LS(LSID.LSID_MIExport) + "...", rowsCount);

                try
                {
                    Workbook  workbook  = new Workbook();
                    Worksheet worksheet = new Worksheet(title);

                    worksheet.Cells[0, 1] = new Cell(cap1);
                    worksheet.Cells[0, 2] = new Cell(cap2);

                    int row = 1;
                    for (int i = 0; i < rowsCount; i++)
                    {
                        StatsItem item = vals[i];
                        worksheet.Cells[row, 1] = new Cell(item.Caption);
                        worksheet.Cells[row, 2] = new Cell(item.GetDisplayString());

                        row++;
                        progress.ProgressStep();
                    }

                    workbook.Worksheets.Add(worksheet);
                    workbook.Save(fileName);

                    if (File.Exists(fileName))
                    {
                        Process.Start(fileName);
                    }
                }
                finally
                {
                    progress.ProgressDone();
                }
            }
            catch (Exception ex)
            {
                Logger.LogWrite("TreeStats.WriteStatsReport(): " + ex.Message);
                AppHost.StdDialogs.ShowError(LangMan.LS(LSID.LSID_UploadErrorInExcel));
            }
#endif
        }
예제 #2
0
        private static void CheckVal(List <StatsItem> valsList, string val, GDMSex sex = GDMSex.svUnknown)
        {
            if (sex == GDMSex.svUnknown)
            {
                if (val == "-1" || val == "" || val == "0")
                {
                    val = "?";
                }
            }

            int vIdx = valsList.FindIndex(delegate(StatsItem lv) { return(lv.Caption == val); });

            StatsItem lvi;

            if (vIdx == -1)
            {
                lvi = new StatsItem(val, sex != GDMSex.svUnknown);
                valsList.Add(lvi);
            }
            else
            {
                lvi = valsList[vIdx];
            }

            switch (sex)
            {
            case GDMSex.svFemale:
                lvi.ValF = lvi.ValF + 1;
                break;

            case GDMSex.svMale:
                lvi.ValM = lvi.ValM + 1;
                break;

            case GDMSex.svUnknown:
            case GDMSex.svIntersex:
                lvi.Value = lvi.Value + 1;
                break;
            }
        }