Форум программистов, компьютерный форум CyberForum.ru

Выделение диапазона в Excel - C++

Восстановить пароль Регистрация
 
OverDozero
 Аватар для OverDozero
98 / 98 / 6
Регистрация: 07.04.2011
Сообщений: 517
26.11.2014, 17:20     Выделение диапазона в Excel #1
Всем доброго времени суток.
Есть программа,которая копирует данные с 1 книги экселя в другую,с определенными параметрами,форматом,проверкой и тд.
Столкнулся с проблемой форматирования ячеек(и именно установкой границ ячеек) в скопированной книге.
Форматирую верхнюю строку листа:
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
25
26
27
28
void Style_Header (Excel::_WorksheetPtr NewSheet)
{
        NewSheet->Range["A1"]->RowHeight = 53;//высота верхней строки 
        NewSheet->Range["A1"]["L1"]->Font->Name = "Arial Cyr";//шрифт
        NewSheet->Range["A1"]["L1"]->Font->Size = 10;//размер шрифта
        NewSheet->Range["A1"]["L1"]->WrapText = true;//перенос по словам
        NewSheet->Range["A1"]->ColumnWidth = 5.5;
        NewSheet->Range["B1"]->ColumnWidth = 14.45;
        NewSheet->Range["C1"]->ColumnWidth = 8.5;
        NewSheet->Range["D1"]->ColumnWidth = 21.7;
        NewSheet->Range["E1"]->ColumnWidth = 8.5;
        NewSheet->Range["F1"]->ColumnWidth = 7.3;
        NewSheet->Range["G1"]->ColumnWidth = 17.15;
        NewSheet->Range["H1"]->ColumnWidth = 11.5;
        NewSheet->Range["I1"]->ColumnWidth = 16.7;
        NewSheet->Range["J1"]->ColumnWidth = 13,6;
        NewSheet->Range["K1"]->ColumnWidth = 14;
        NewSheet->Range["L1"]->ColumnWidth = 9;
        NewSheet->Range["A1"]["L1"]->VerticalAlignment = Excel::xlCenter;
        NewSheet->Range["A1"]["L1"]->HorizontalAlignment = Excel::xlCenter;
        NewSheet->Range["A1"]["L1"]->Font->Bold = true;
        NewSheet->Range["A1"]["L1"]->Borders->Item[xlEdgeTop]->LineStyle = xlContinuous; //верх
        NewSheet->Range["A1"]["L1"]->Borders->Item[xlEdgeBottom]->LineStyle = xlContinuous;//низ
        NewSheet->Range["A1"]["L1"]->Borders->Item[xlInsideVertical]->LineStyle = xlContinuous;//вертикальные
        NewSheet->Range["A1"]->Borders->Item[xlEdgeLeft]->LineStyle = xlContinuous;//закрывающая слева
        NewSheet->Range["L1"]->Borders->Item[xlEdgeRight]->LineStyle = xlContinuous;// закрывающая справа
 
}
Это заголовок.Ниже располагаются ячейки с данными.И количество строк с данными-неизвестно.Известно только количество столбцов-их всегда 12.
Пробовал использовать присваивание формата каждой ячейки,пока идет обработка данных с листа-сработало,но время выполнения задачи заметно увеличивается.Не вариант.
Вот код поиска максимально заполненного столбца в каждой строке.
C++
1
2
3
4
5
6
int NonEmptyRow( Excel::_WorksheetPtr Sheet, int Col )//поиск непустых строк
{
    Excel::RangePtr NonEmptyRow;
    NonEmptyRow = Sheet->Cells->Item[Sheet->Rows->Count][Col];
    return NonEmptyRow->GetEnd(Excel::xlUp)->Row;
}
Вызов
C++
1
2
for (i = 1;i<=12;i++)//12 столбцов
   if (NonEmptyRow(pSheet,i) > MaxCountNonEmpty) {MaxCountNonEmpty = NonEmptyRow(pSheet,i);}//поиск максимального количества непустых столбцов по строке.MaxCountNonEmpty тип int для дальнейшей обработки.
MaxCountNonEmpty содержит максимальное НЕПУСТОЕ количество строк в каждой строке
Подскажите каким образом выделить диапазон ячеек,который располагается начиная с ячейки А2,до L(MaxCountNonEmpty),чтобы применить форматирование разом к всему диапазону.
Спасибо

Добавлено через 9 часов 20 минут
UP UP

Добавлено через 12 часов 14 минут
Никто не может подсказать...?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 17:20     Выделение диапазона в Excel
Посмотрите здесь:

C++ Случайное число из диапазона от 0 до 1
числа из определённого диапазона. C++
Поле first — целое число, левая граница диапазона, включается в диапазон; поле second — целое число, правая граница диапазона, не включается в диапазо C++
Цикл вывода диапазона данных C++
поиск чисел диапазона C++
C++ Не получается исправить ошибку (Вводится диапазон, где 1-ое число-начало диапазона, 2-ое число приращени, 3-е число конец диапазона)
C++ Указатель вне корректного диапазона
Нормирование массива до указанного диапазона C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru