Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91

Покраска Excel при экспорте

14.08.2019, 07:46. Показов 2062. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, нужно покрасить определенные столбцы в другой цвет, но проблема в том, что он красит не только столбцы, но и все ячейки до конца файла, как это исправить?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51")
                {
                    workSheet.Column(col).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
                }
                if (workSheet.Cells[1, col].Text == "LENGTH52")
                {
                    workSheet.Column(col).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
                }
 
                if (workSheet.Cells[1, col].Text == "MTC")
                {
                    workSheet.Column(col).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
 
                }
 
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2019, 07:46
Ответы с готовыми решениями:

Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel?
Здравствуйте! Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel? Вопрос обсуждается везде и много...

Ошибка при экспорте в Excel
Здравствуйте! При нажатии на кнопку Excel получаю ошибку: Control 'GridView1' of type 'GridView' must be placed inside a form tag with...

Проблемы при экспорте данных из GridView в Excel
мой вопрос такой.. я создал GridView и пытаюсь его экспортировать в Excel. работает нормально, но стоит мне в GridView добавить его...

28
14.08.2019, 16:05

Не по теме:


Я стесняюсь спросить, а при чем тут ASP.net?

0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
15.08.2019, 05:22  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение

Не по теме:


Я стесняюсь спросить, а при чем тут ASP.net?

Проект в С# web form, что не так?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.08.2019, 10:05
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Проект в С# web form, что не так?
здесь от веб форм ничего нет, тут надо разбираться с библиотекой эксель, курить доки...
По сути, ты ему и задаешь покрасить столбец:
C#
1
workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
Тут надо искать ячейки, в которых есть данные, поищи как определить самую нижнюю занятую ячейку в столбце.
Еще один совет:
создай отдельный метод:
C#
1
2
3
4
5
private void SetColumnLightGreen(int ColumnNumber)
{
                    workSheet.Column(ColumnNumber).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(ColumnNumber).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
}
Тогда твой код можно переписать в следующем виде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51")
                {
                    SetColumnLightGreen(col);
                }
                if (workSheet.Cells[1, col].Text == "LENGTH52")
                {
                   SetColumnLightGreen(col);
                }
 
                if (workSheet.Cells[1, col].Text == "MTC")
                {
                    SetColumnLightGreen(col);
 
                }
 
            }
Ну и что-бы все было совсем красиво совместить все условия:
C#
1
2
3
4
5
6
7
8
9
10
11
12
var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51"||
                    workSheet.Cells[1, col].Text == "LENGTH52" ||
                    workSheet.Cells[1, col].Text == "MTC" )
                {
                    SetColumnLightGreen(col);
                }               
            }
ну а дальше надо будет работать конкретно над методом SetColumnLightGreen.

Добавлено через 1 минуту
50SmRadosti, кстати, какой библиотекой пользуешься для работы с эксель?
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
15.08.2019, 10:27  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
здесь от веб форм ничего нет, тут надо разбираться с библиотекой эксель, курить доки...
По сути, ты ему и задаешь покрасить столбец:
C#
1
workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
Тут надо искать ячейки, в которых есть данные, поищи как определить самую нижнюю занятую ячейку в столбце.
Еще один совет:
создай отдельный метод:
C#
1
2
3
4
5
private void SetColumnLightGreen(int ColumnNumber)
{
                    workSheet.Column(ColumnNumber).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(ColumnNumber).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
}
Тогда твой код можно переписать в следующем виде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51")
                {
                    SetColumnLightGreen(col);
                }
                if (workSheet.Cells[1, col].Text == "LENGTH52")
                {
                   SetColumnLightGreen(col);
                }
 
                if (workSheet.Cells[1, col].Text == "MTC")
                {
                    SetColumnLightGreen(col);
 
                }
 
            }
Ну и что-бы все было совсем красиво совместить все условия:
C#
1
2
3
4
5
6
7
8
9
10
11
12
var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51"||
                    workSheet.Cells[1, col].Text == "LENGTH52" ||
                    workSheet.Cells[1, col].Text == "MTC" )
                {
                    SetColumnLightGreen(col);
                }               
            }
ну а дальше надо будет работать конкретно над методом SetColumnLightGreen.

Добавлено через 1 минуту
50SmRadosti, кстати, какой библиотекой пользуешься для работы с эксель?
Epplus, спасибо, попробую и отпишусь
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.08.2019, 11:00
так как у меня нет проекта, то пишу по наитию здесь, проверяйте у себя:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Linq;//не забываем добавить перед классом!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
...
private void SetColumnLightGreen(int ColumnNumber)
{
              var end =workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
              for(int i=0;i<end;i++)//возможен вариант написания  workSheet.Column(ColumnNumber).Cells[i]
              {
                            workSheet.Column(ColumnNumber).Cells(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
                            workSheet.Column(ColumnNumber).Cells(i).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
              }                                 
}
должно работать, но тутнадо посмотреть правильность написания workSheet.Column(ColumnNumber).Cells(i), возможно правильнее писать:
workSheet.Column(ColumnNumber).Cells[i]

Добавлено через 3 минуты
еще вариант который может быть:
C#
1
2
3
4
5
6
7
8
9
private void SetColumnLightGreen(int ColumnNumber)
{
              var end =workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
              for(int i=0;i<end;i++)
              {
                            workSheet.Cells[i, ColumnNumber].Style.Fill.PatternType = ExcelFillStyle.Solid;
                            workSheet.Cells[i, ColumnNumber].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
              }                                 
}
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
15.08.2019, 12:33  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
так как у меня нет проекта, то пишу по наитию здесь, проверяйте у себя:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Linq;//не забываем добавить перед классом!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
...
private void SetColumnLightGreen(int ColumnNumber)
{
              var end =workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
              for(int i=0;i<end;i++)//возможен вариант написания  workSheet.Column(ColumnNumber).Cells[i]
              {
                            workSheet.Column(ColumnNumber).Cells(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
                            workSheet.Column(ColumnNumber).Cells(i).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
              }                                 
}
должно работать, но тутнадо посмотреть правильность написания workSheet.Column(ColumnNumber).Cells(i), возможно правильнее писать:
workSheet.Column(ColumnNumber).Cells[i]

Добавлено через 3 минуты
еще вариант который может быть:
C#
1
2
3
4
5
6
7
8
9
private void SetColumnLightGreen(int ColumnNumber)
{
              var end =workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
              for(int i=0;i<end;i++)
              {
                            workSheet.Cells[i, ColumnNumber].Style.Fill.PatternType = ExcelFillStyle.Solid;
                            workSheet.Cells[i, ColumnNumber].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
              }                                 
}

C#
1
2
3
4
5
6
7
8
9
10
11
 private void SetColumnLightGreen(int ColumnNumber)
        {
            ExcelPackage excel = new ExcelPackage();
            var workSheet = excel.Workbook.Worksheets.Add("Products");
            var end = workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
            for (int i = 0; i < end; i++)
            {
                workSheet.Cells[i, ColumnNumber].Style.Fill.PatternType = ExcelFillStyle.Solid;
                workSheet.Cells[i, ColumnNumber].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
            }
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 protected void Button2_Click(object sender, EventArgs e)
        { var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
            for (int col = start.Column; col <= end.Column; col++)
            {
 
                if (workSheet.Cells[1, col].Text == "STATUS51" ||
                    workSheet.Cells[1, col].Text == "LENGTH52" ||
                    workSheet.Cells[1, col].Text == "MTC")
                {
                    SetColumnLightGreen(col);
                }
            }
Что-то такое? Ругается на col - имя не существует в текущем контексте
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.08.2019, 13:40
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Что-то такое? Ругается на col - имя не существует в текущем контексте
очепятался:
C#
1
var end = workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
Должно быть
C#
1
var end = workSheet.Cells.Where(c => c.Start.Column == ColumnNumber && !c.Value.ToString().Equals("")).Last();
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
15.08.2019, 13:53  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
очепятался:
C#
1
var end = workSheet.Cells.Where(c => c.Start.Column == col && !c.Value.ToString().Equals("")).Last();
Должно быть
C#
1
var end = workSheet.Cells.Where(c => c.Start.Column == ColumnNumber && !c.Value.ToString().Equals("")).Last();
Тоже ошибку выдает
Оператор < не возможно применить к операнду типа "int" и "ExelRangeBase"
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.08.2019, 14:31
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Тоже ошибку выдает
Оператор < не возможно применить к операнду типа "int" и "ExelRangeBase"
значит заменить ColumnNumber на workSheet.Column(ColumnNumber)
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
15.08.2019, 15:17
госпади . ну неужели сложно отладчиком воспользоваться да посмотреть перечень методов и их сигнатуру ?
если да , то рано еще библиотеки юзать и тем более на веб.платформу лезть , в раздел для новичков по c# дорога.
извините , накипело от таких тем ). , сейчас будем переменную на 10-ок страниц обсуждать.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
15.08.2019, 15:40
Цитата Сообщение от sau Посмотреть сообщение
госпади . ну неужели сложно отладчиком воспользоваться да посмотреть перечень методов и их сигнатуру ?
если да , то рано еще библиотеки юзать и тем более на веб.платформу лезть , в раздел для новичков по c# дорога.
извините , накипело от таких тем ). , сейчас будем переменную на 10-ок страниц обсуждать.

Не по теме:


у меня такой библиотеки нет(((
Но очень хочется помочь человеку)))


Цитата Сообщение от sau Посмотреть сообщение
в раздел для новичков по c# дорога.

Не по теме:


Это было понятно вот отсюда:

Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Покраска Excel при экспорте
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Добрый день, нужно покрасить определенные столбцы в другой цвет
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Проект в С# web form, что не так?
т.е. человеку совершенно оранжево, что вопрос ну никак не касается предметной области)))

0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
16.08.2019, 05:24  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
значит заменить ColumnNumber на workSheet.Column(ColumnNumber)
C#
1
2
3
4
5
6
7
8
9
10
11
  private void SetColumnLightGreen(int ColumnNumber)
        {
            ExcelPackage excel = new ExcelPackage();
            var workSheet = excel.Workbook.Worksheets.Add("Products");
            var end = workSheet.Cells.Where(c => c.Start.Column == workSheet.Column(ColumnNumber) && !c.Value.ToString().Equals("")).Last();
            for (int i = 0; i < end; i++)
            {
                workSheet.Cells[i, ColumnNumber].Style.Fill.PatternType = ExcelFillStyle.Solid;
                workSheet.Cells[i, ColumnNumber].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
            }
        }
Вот так? Пишет, что оператор == не возможно применить к операнду типа "int" и "Excel column"
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
16.08.2019, 09:10
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
Вот так? Пишет, что оператор == не возможно применить к операнду типа "int" и "Excel column"
где пишет (сделай скриншет)?
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
16.08.2019, 10:25  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
где пишет (сделай скриншет)?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
16.08.2019, 10:38
какой тип у
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
c.Start.Column
и какой тип у
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
workSheet.Column(ColumnNumber)
?
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
16.08.2019, 10:45  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
какой тип у
и какой тип у

?
На сколько я понял int и ExcelColumn
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
16.08.2019, 10:49
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
На сколько я понял int и ExcelColumn
не на сколько ты понял, а конкретно! я тоже сейчас могу предположить, что помогать при таких ответах не буду, что делать будешь?
0
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 91
16.08.2019, 11:00  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
не на сколько ты понял, а конкретно! я тоже сейчас могу предположить, что помогать при таких ответах не буду, что делать будешь?
C int, Worksheet - Excel
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
16.08.2019, 11:05
Цитата Сообщение от 50SmRadosti Посмотреть сообщение
C int, Worksheet - Excel
ок, тогда переделаем код метода:
C#
1
2
3
4
5
6
7
8
9
10
11
private void SetColumnLightGreen(int ColumnNumber)
        {
            ExcelPackage excel = new ExcelPackage();
            var workSheet = excel.Workbook.Worksheets.Add("Products");
            var end = workSheet.Cells.Where(c => c.Start.Column == ColumnNumber && !c.Value.ToString().Equals("")).Last();
            for (int i = 0; i < end; i++)
            {
                workSheet.Cells[i, ColumnNumber].Style.Fill.PatternType = ExcelFillStyle.Solid;
                workSheet.Cells[i, ColumnNumber].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.08.2019, 11:05
Помогаю со студенческими работами здесь

Как покрасить столбы при экспорте в Excel
Добрый день, имеется код экспорта в Excel System.Data.DataTable dit = null; try { dit =...

Работа RenderControl при экспорте Table (asp control) to Excel
Здравствуйте. Не могу понять почему не отрабатывает RenderControl для таблицы. Заполняю таблицу Table1 и выполняю экспорт: ...

при экспорте .csv в .mdb при наличии пустых полей проблема.
Esli v posledney stroke fila .csv est pustie polya, comp zavisaet. Kakaya mozhet bit' prichina? code takoy: const ForReading = 1 ...

Изменение формата ячейки при экспорте в Calc
Всем доброго времени суток. Озадачился. Формирую грид, далее из этого грида выгружаю даные в openoffice calc. С числовым форматом все...

Кодировка при экспорте данных в СSV-файл
Здравствуйте! Передо мной стоит задача экспорта данных в формат CSV. Я пробовал делать это следующим образом: 1. посылал запрос к БД ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru