Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
50SmRadosti
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 87
1

Как получить границы / рамки вокруг диапазона в Excel, используя EPPlus

13.08.2019, 09:23. Просмотров 148. Ответов 4
Метки нет (Все метки)

Код ниже генерирует границы для всех ячеек в пределах диапазона [2, 2, 5, 11], но я хочу, чтобы все было в рамках, как это сделать? .

C#
1
2
3
4
5
  var FirstTableRange = wsMyWorkSheet.Cells[2, 2, 5, 11];
        FirstTableRange.Style.Border.Top.Style = ExcelBorderStyle.Thick;
        FirstTableRange.Style.Border.Left.Style = ExcelBorderStyle.Thick;
        FirstTableRange.Style.Border.Right.Style = ExcelBorderStyle.Thick;
        FirstTableRange.Style.Border.Bottom.Style = ExcelBorderStyle.Thick;
Добавлено через 1 час 6 минут
Сделал двумя циклами, на проблема в том, что он рисует дальше моей таблицы, можно как то это убрать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    for (int i = start.Column; i <= end.Column; i++)
            {
                workSheet.Column(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
                workSheet.Column(i).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightcoral"));
                workSheet.Column(i).Style.Border.BorderAround(ExcelBorderStyle.Medium, System.Drawing.Color.Black);
            
 
                if (workSheet.Cells[1, i].Text == "MTC")
                {
                    workSheet.Column(i).Style.Fill.PatternType = ExcelFillStyle.Solid;
                    workSheet.Column(i).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightgreen"));
                }
            }
            for (int j = start.Row; j <= end.Row; j++)
            {
                workSheet.Row(j).Style.Fill.PatternType = ExcelFillStyle.Solid;
 
                workSheet.Row(j).Style.Border.BorderAround(ExcelBorderStyle.Medium, System.Drawing.Color.Black);
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2019, 09:23
Ответы с готовыми решениями:

Нарисовать внешние границы выделенного диапазона ячеек в EXCEL
Товарищи подскажите как выделить только внешние границы у выделенного диапазона ячеек в excel ? ...

Как, используя библиотеку EPPlus, поставить разрыв страницы (начать новую страницу)
до этого использовал Imports System.Runtime.InteropServices и в коде...

Как получить номер столбца известной ячейки? (EPPlus)
Хочу задать вычисляемое значение столбца worksheet.Cells в строке 21, чтобы получилось нечто вроде...

Как убрать рамки вокруг кликабельного рисунка?
html .... &lt;img src=&quot;locks.jpg&quot; alt=&quot;lock links&quot; width=&quot;510&quot; height=&quot;110&quot; usemap=&quot;#locks&quot;/&gt; ...

Как сделать рамки вокруг элементов на форме?
Возможно ли задать рамки вокруг TabControl и panel не рисуя их самостоятельно???

4
Pavel55
893 / 315 / 127
Регистрация: 27.10.2006
Сообщений: 733
13.08.2019, 11:07 2
Попробуйте так,

xlSht - это ваш workSheet

C#
1
2
3
4
5
 ExcelRange UsedRange = xlSht.Cells[xlSht.Dimension.Address];
   UsedRange.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
0
50SmRadosti
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 87
13.08.2019, 11:55  [ТС] 3
Цитата Сообщение от Pavel55 Посмотреть сообщение
Попробуйте так,

xlSht - это ваш workSheet

C#
1
2
3
4
5
 ExcelRange UsedRange = xlSht.Cells[xlSht.Dimension.Address];
   UsedRange.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
   UsedRange.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
Спасибо, помогло, можете подсказать, мне нужно еще поля покрасить, все в красный, и последнее в зеленый, я сделал циклом

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   var start = workSheet.Dimension.Start;
            var end = workSheet.Dimension.End;
 
            for (int col = start.Column; col <= end.Column; col++)
            {
                workSheet.Column(col).Style.Fill.PatternType = ExcelFillStyle.Solid;
                workSheet.Column(col).Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("lightcoral"));
                workSheet.Column(col).Style.Border.BorderAround(ExcelBorderStyle.Medium, System.Drawing.Color.Black);
 
 
                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
Pavel55
893 / 315 / 127
Регистрация: 27.10.2006
Сообщений: 733
13.08.2019, 12:29 4
Возможно вот в этой строке
C#
1
var end = workSheet.Dimension.End;
неверно определяется номер последнего столбца.

Попробуйте циклом идти от значения end к 1 и проверять ячейку на пусто или не пусто и дойти до реальных значений на листе. То есть если end = 50, то цикл с 50 до 1 и проверка workSheet.Cells[1,col].Value != null (или workSheet.Cells[1,col].Value != "")

P.S. Если в обычном Interop (не в Epplus), то последний столбец я ищу так - то есть поиск по 1 строке первую непустую ячейку справа
C#
1
int iLastCol = xlSht.Cells[1, xlSht.Columns.Count].End[Excel.XlDirection.xlToLeft].Column;
0
50SmRadosti
1 / 1 / 0
Регистрация: 26.03.2016
Сообщений: 87
13.08.2019, 12:45  [ТС] 5
Цитата Сообщение от Pavel55 Посмотреть сообщение
Возможно вот в этой строке
C#
1
var end = workSheet.Dimension.End;
неверно определяется номер последнего столбца.

Попробуйте циклом идти от значения end к 1 и проверять ячейку на пусто или не пусто и дойти до реальных значений на листе. То есть если end = 50, то цикл с 50 до 1 и проверка workSheet.Cells[1,col].Value != null (или workSheet.Cells[1,col].Value != "")

P.S. Если в обычном Interop (не в Epplus), то последний столбец я ищу так - то есть поиск по 1 строке первую непустую ячейку справа
C#
1
int iLastCol = xlSht.Cells[1, xlSht.Columns.Count].End[Excel.XlDirection.xlToLeft].Column;
Проблема в том, что записей может быть сколько угодно, и я не знаю сколько именно. Думаю, что тоже в этой строке, пока не понимаю, что с ней сделать
0
13.08.2019, 12:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2019, 12:45

Как убрать рамки вокруг рисунков документа Word
Добрый день. У меня в документе Word2003 на рисунках расставлены такие рамки: Подобная рамка...

Как избавиться от пунктирной рамки вокруг ярлыков и папок?
Прилагаю скрин. Читал различные варианты в интернете. но мне ничего не помогло.

Как убрать наружные границы вокруг таблицы в HTML
Здравствуйте! Я новичок в сфере HTML, сейчас передо мною стоит задание сверстать сайт с помощью...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru