Пример #1
0
        private static void BarChart()
        {
            // Create new document.
            using (DocX document = DocX.Create(@"docs\BarChart.docx"))
            {
                // Create chart.
                BarChart c = new BarChart();
                c.BarDirection = BarDirection.Column;
                c.BarGrouping  = BarGrouping.Standard;
                c.GapWidth     = 400;
                c.AddLegend(ChartLegendPosition.Bottom, false);

                // Create data.
                List <ChartData> company1 = ChartData.CreateCompanyList1();
                List <ChartData> company2 = ChartData.CreateCompanyList2();

                // Create and add series
                Series s1 = new Series("Microsoft");
                s1.Color = Color.GreenYellow;
                s1.Bind(company1, "Mounth", "Money");
                c.AddSeries(s1);
                Series s2 = new Series("Apple");
                s2.Bind(company2, "Mounth", "Money");
                c.AddSeries(s2);

                // Insert chart into document
                document.InsertParagraph("Diagram").FontSize(20);
                document.InsertChart(c);
                document.Save();
            }
        }
Пример #2
0
        private static Chart CreateBarChart(Series series)
        {
            BarChart pieChart = new BarChart();

            pieChart.AddLegend(ChartLegendPosition.Left, false);
            pieChart.AddSeries(series);
            return(pieChart);
        }
Пример #3
0
        private static Chart CreateBarChart(Info info)
        {
            BarChart barChart = new BarChart();

            barChart.AddLegend(ChartLegendPosition.Top, false);
            barChart.AddSeries(GetSeriesFirst(info));
            return(barChart);
        }
Пример #4
0
        private static Chart CreateBarChart(Series series)
        {
            // создаём столбцовую диаграмму
            BarChart barChart = new BarChart();

            // отображаем легенду сверху диаграммы
            barChart.AddLegend(ChartLegendPosition.Top, false);

            // создаём набор данных и добавляем в диаграмму
            barChart.AddSeries(series);

            return(barChart);
        }
Пример #5
0
        private Chart CreateBarChart()
        {
            BarChart barChart = new BarChart();

            barChart.AddLegend(ChartLegendPosition.Top, false);

            var series = new Series(DiagramName);

            series.Bind(Data, Name, Value);

            barChart.AddSeries(series);

            return(barChart);
        }
Пример #6
0
        /// <summary>
        /// Add a Bar chart to a document.
        /// </summary>
        public static void BarChart()
        {
            Console.WriteLine("\tBarChart()");

            // Creates a document
            using (var document = DocX.Create(ChartSample.ChartSampleOutputDirectory + @"BarChart.docx"))
            {
                // Add a title
                document.InsertParagraph("Bar Chart").FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;

                // Create a bar chart.
                var c = new BarChart();
                c.AddLegend(ChartLegendPosition.Left, false);
                c.BarDirection = BarDirection.Bar;
                c.BarGrouping  = BarGrouping.Standard;
                c.GapWidth     = 200;


                // Create the data.
                var canada = ChartData.CreateCanadaExpenses();
                var usa    = ChartData.CreateUSAExpenses();
                var brazil = ChartData.CreateBrazilExpenses();

                // Create and add series
                var s1 = new Series("Brazil");
                s1.Color = Color.GreenYellow;
                s1.Bind(brazil, "Category", "Expenses");
                c.AddSeries(s1);

                var s2 = new Series("USA");
                s2.Color = Color.LightBlue;
                s2.Bind(usa, "Category", "Expenses");
                c.AddSeries(s2);

                var s3 = new Series("Canada");
                s3.Color = Color.Gray;
                s3.Bind(canada, "Category", "Expenses");
                c.AddSeries(s3);

                // Insert the chart into the document.
                document.InsertParagraph("Expenses(M$) for selected categories per country").FontSize(15).SpacingAfter(10d);
                document.InsertChart(c, 350f, 550f);

                document.Save();
                Console.WriteLine("\tCreated: BarChart.docx\n");
            }
        }
Пример #7
0
        /// <typeparam name="T"></typeparam>
        /// <param name="prods">Список продуктов.</param>
        /// <param name="name">Название свойства содержащего имя продукта.</param>
        /// <param name="count">Название свойства содержащего количество продукта.</param>
        /// <param name="path">Строка вида @"D:\path\to\diagram.docx".</param>
        public void CreateDiagram <T>(List <T> prods, string name, string count, string path)
        {
            DocX doc = DocX.Create(path);

            BarChart barChart = new BarChart();

            barChart.AddLegend(ChartLegendPosition.Top, false);

            Series series = new Series("Products");

            series.Bind(prods, name, count);
            barChart.AddSeries(series);

            doc.InsertChart(barChart);

            doc.Save();
        }
Пример #8
0
        public NewBlank
        (
            System.Windows.Forms.DataVisualization.Charting.Chart chartСпросЗаКвартал,
            System.Windows.Forms.DataVisualization.Charting.Chart chartСпросЗаМесяц
        )
        {
            string ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Resources\doors.mdf;Integrated Security=True;Connect Timeout=30";

            Directory.CreateDirectory(Environment.CurrentDirectory + $@"\Отчеты по продажам\{DateTime.Now.Year}\{НазваниеМесяца(DateTime.Now.Month, true)}\");
            string        path       = Environment.CurrentDirectory + $@"\Отчеты по продажам\{DateTime.Now.Year}\{НазваниеМесяца(DateTime.Now.Month, true)}\Отчет по продажам и предыдущий квартал ({НазваниеМесяца(DateTime.Now.Month, true)} {DateTime.Now.Year}).docx";
            SqlConnection Connection = new SqlConnection(ConnectionString);

            DocX document = DocX.Create(path);

            document.MarginTop    = 30;
            document.MarginLeft   = 30;
            document.MarginRight  = 30;
            document.MarginBottom = 30;

            document.InsertParagraph($"Дата составления: {DataReturner(DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year)}\n").
            Font("Times New Roman").
            FontSize(11).
            Alignment = Alignment.right;

            document.InsertParagraph("Отчет о продажах за текущий месяц и предыдущий квартал\n\n").
            Font("Times New Roman").
            FontSize(28).
            Bold().
            Alignment = Alignment.center;

            document.InsertParagraph("На приведенном ниже графике отображен график спроса дверей за месяц:\n")
            .Font("Times New Roman")
            .FontSize(12)
            .Alignment = Alignment.left;

            #region Составление и заполнение графиков продаж за месяц

            PieChart WordChart_СпросЗаМесяц = new PieChart();
            WordChart_СпросЗаМесяц.AddLegend(ChartLegendPosition.Right, false);

            try
            {
                Connection.Open();
            }
            catch (SqlException)
            {
                MessageBox.Show("Проверьте, достаточно ли места на диске, достаточно ли прав у учетной записи для операций с БД (См. справку), файлы MDF и LDF не должны быть помечены \"Только для чтения\". \n\nВозможно стоит попробовать отключить БД и запустить программу еще раз.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            SqlCommand comm     = new SqlCommand("SELECT count(id_profil) FROM Profili", Connection);
            object     езультат = comm.ExecuteScalar();

            if (езультат != null)
            {
                int Количество_профилей = (int)езультат;

                List <string> Name   = new List <string>();
                List <int>    Value  = new List <int>();
                Series        series = new Series("Спрос товара за месяц, группировка по профилю");

                for (int i = 0; i < Количество_профилей; i++)
                {
                    comm = new SqlCommand($"SELECT profil FROM Profili where id_profil={i + 1}", Connection);
                    string НазваниеПрофиля = (string)comm.ExecuteScalar();
                    comm     = new SqlCommand($"select kolvo from Zakazy where id_profil = {i + 1} and data between '{DateTime.Now.Year}/{DateTime.Now.Month}/01' and '{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"{НазваниеПрофиля} ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                }
                series.Bind(Name, Value);
                WordChart_СпросЗаМесяц.AddSeries(series);
            }
            Connection.Close();
            document.InsertChart(WordChart_СпросЗаМесяц);
            #endregion

            document.InsertParagraph("\n\nА также диаграмма продаж за предыдущий квартал. Она предоставлена ниже:\n")
            .Font("Times New Roman")
            .FontSize(12)
            .Alignment = Alignment.left;

            #region Составление и заполнение графиков продаж за предыдущий квартал

            BarChart WordChart_СпросЗаКвартал = new BarChart();
            WordChart_СпросЗаКвартал.AddLegend(ChartLegendPosition.Right, false);
            WordChart_СпросЗаКвартал.BarDirection = BarDirection.Column;
            WordChart_СпросЗаКвартал.BarGrouping  = BarGrouping.Clustered;
            WordChart_СпросЗаКвартал.GapWidth     = 200;

            try
            {
                Connection.Open();
            }
            catch (SqlException)
            {
                MessageBox.Show("Проверьте, достаточно ли места на диске, достаточно ли прав у учетной записи для операций с БД (См. справку), файлы MDF и LDF не должны быть помечены \"Только для чтения\". \n\nВозможно стоит попробовать отключить БД и запустить программу еще раз.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            comm     = new SqlCommand("SELECT count(id_profil) FROM Profili", Connection);
            езультат = comm.ExecuteScalar();

            if (езультат != null)
            {
                List <string> Name  = new List <string>();
                List <int>    Value = new List <int>();

                switch (Statistics.КакойКварталОтобразить())
                {
                case 1:
                {
                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year - 1}/10/01' and " +
                                          $"'{DateTime.Now.Year - 1}/10/{DateTime.DaysInMonth(DateTime.Now.Year - 1, 10)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Октябрь ({DateTime.Now.Year - 1}) ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Октябрь ({DateTime.Now.Year - 1}) (0)");
                        Value.Add(0);
                    }


                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year - 1}/11/01' and " +
                                          $"'{DateTime.Now.Year - 1}/11/{DateTime.DaysInMonth(DateTime.Now.Year - 1, 11)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Ноябрь ({DateTime.Now.Year - 1}) ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Ноябрь ({DateTime.Now.Year - 1}) (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year - 1}/12/01' and " +
                                          $"'{DateTime.Now.Year - 1}/12/{DateTime.DaysInMonth(DateTime.Now.Year - 1, 12)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Декабрь ({DateTime.Now.Year - 1}) ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Декабрь ({DateTime.Now.Year - 1}) (0)");
                        Value.Add(0);
                    }
                }
                break;

                case 2:
                {
                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/01/01' and " +
                                          $"'{DateTime.Now.Year}/01/{DateTime.DaysInMonth(DateTime.Now.Year, 01)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Январь ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Январь (0)");
                        Value.Add(0);
                    }
                    Name.Add($"Январь");
                    Value.Add((int)comm.ExecuteScalar());

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/02/01' and " +
                                          $"'{DateTime.Now.Year}/02/{DateTime.DaysInMonth(DateTime.Now.Year, 02)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Февраль ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Февраль (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/03/01' and " +
                                          $"'{DateTime.Now.Year}/03/{DateTime.DaysInMonth(DateTime.Now.Year, 03)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Март ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Март (0)");
                        Value.Add(0);
                    }
                }
                break;

                case 3:
                {
                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/04/01' and " +
                                          $"'{DateTime.Now.Year}/04/{DateTime.DaysInMonth(DateTime.Now.Year, 04)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Апрель ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Апрель (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/05/01' and " +
                                          $"'{DateTime.Now.Year}/05/{DateTime.DaysInMonth(DateTime.Now.Year, 05)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Май ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Май (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/06/01' and " +
                                          $"'{DateTime.Now.Year}/06/{DateTime.DaysInMonth(DateTime.Now.Year, 06)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Июнь ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Июнь (0)");
                        Value.Add(0);
                    }
                }
                break;

                case 4:
                {
                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/07/01' and " +
                                          $"'{DateTime.Now.Year}/07/{DateTime.DaysInMonth(DateTime.Now.Year, 07)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Июль ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Июль (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/08/01' and " +
                                          $"'{DateTime.Now.Year}/08/{DateTime.DaysInMonth(DateTime.Now.Year, 08)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Август ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Август (0)");
                        Value.Add(0);
                    }

                    comm = new SqlCommand($"SELECT sum(kolvo) FROM Zakazy where data between " +
                                          $"'{DateTime.Now.Year}/09/01' and " +
                                          $"'{DateTime.Now.Year}/09/{DateTime.DaysInMonth(DateTime.Now.Year, 09)}'", Connection);
                    езультат = comm.ExecuteScalar();
                    if (езультат != null)
                    {
                        Name.Add($"Сентябрь ({(int)Результат})");
                        Value.Add((int)езультат);
                    }
                    else
                    {
                        Name.Add($"Сентябрь (0)");
                        Value.Add(0);
                    }
                }
                break;
                }

                var series = new Series("Статистика проданных дверей за квартал");
                series.Bind(Name, Value);
                WordChart_СпросЗаКвартал.AddSeries(series);
            }
            Connection.Close();
            document.InsertChart(WordChart_СпросЗаКвартал);

            #endregion

            try
            {
                document.Save();
            }
            catch (IOException)
            {
                MessageBox.Show($"Ошибка при сохранении. \n\nНе удалось записать в файл. Убедитесь что требуемый файл ({path}) закрыт. \n\nИгнорируйте следующее сообщение");
            }
            MessageBox.Show($"Отчет создан. Он находится в директории: \"{path}\".");
        }