Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
1

Перенос текста в объединенных ячейках

05.06.2018, 16:11. Показов 1837. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, выручайте)

Написал код, который передает данные из программы в Excel

.h
C++
1
2
3
4
5
6
7
8
9
10
11
#include <ComObj.hpp>
 
private:    // User declarations
Variant  vVarApp,   
         vVarBooks, 
         vVarBook,   
         vVarSheets, 
         vVarSheet,  
         vVarCells,  
         vVarCell;   
bool     fStart;
.cpp
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
if(!fStart)
{
    try
    {
        vVarApp=CreateOleObject("Excel.Application");
        fStart=true;
    }
    catch(...)
    {
        Application->MessageBox(L"ќшибка при открытии сервера Excel", L"ќшибка...", MB_OK | MB_ICONINFORMATION);
        return;
    }
}
 
//установка свойства
vVarApp.OlePropertySet("Visible",true);
//ѕеременной vVarBooks присваиваетс¤ значение Workbooks - свойство
//объекта Excel.Application, содержащее набор рабочих книг Excel.
vVarBooks=vVarApp.OlePropertyGet("Workbooks");
//SheetsInNewWorkbook задает количество листов в создаваемой книге,
//пусть в первой книге их будет 1 страница (лист)
vVarApp.OlePropertySet("SheetsInNewWorkbook",1);
//ƒобавл¤ем книгу из 1 листов в объект vVarBooks.
vVarBooks.OleProcedure("Add");
//ѕеременна¤ vVarBook содержит ссылку на текущую книгу.
//(ѕусть текуща¤ книга будет перва¤).
vVarBook=vVarBooks.OlePropertyGet("Item",1);
//ѕеременной vVarSheets присваиваем значение
//Worksheets - свойство объекта Excel.Application,
//содержащее набор страниц книги Excel.
vVarSheets=vVarBook.OlePropertyGet("Worksheets");
//берем первый лист
vVarSheet=vVarSheets.OlePropertyGet("Item",1);
//задаем новое им¤ листу
vVarSheet.OlePropertySet("Name", (WideString)"Имя листа");
 
//встаем на указанную ¤чейку
vVarCell=vVarSheet.OlePropertyGet("Range", (WideString)"A1:B2");
vVarCell.OleProcedure("Merge");
vVarCell.OlePropertySet("WrapText", true); ПЕРЕНОС НА ДРУГУЮ СТРОКУ
vVarCell.OlePropertyGet("Font").OlePropertySet("Name", (WideString)"Times New Roman");
vVarCell.OlePropertySet("HorizontalAlignment",-4131);
vVarCell.OlePropertySet("VerticalAlignment",-4108);
//устанавливаем значение данных
vVarCell.OlePropertySet("Value", (WideString)Form1->ATS_Otch->FieldByName("Text")->AsString.c_str());
Но проблема в то, что данные (большой массив) выводятся в объединенные ячейки, но они не переносятся на другую строку (т.е. ячейка не расширяется).

Перенос текста в объединенных ячейках
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2018, 16:11
Ответы с готовыми решениями:

Перенос текста в ячейках StringGrid
Нашел дельфиский код c использованием API procedure TForm1.StringGrid1DrawCell(Sender: TObject;...

Перенос по словам в объединённых ячейках
Доброго времени суток всем! При уменьшении ширины столбца в Excel, содержащего ячейку, полученную...

ListView - перенос текста в ячейках
Здравствуйте. Скажите пожалуйста, если длина текста помещаемого в ячейку ListView View.Details...

Поиск в объединенных ячейках
Здравствуйте, подскажите пожалуйста в следующей проблеме. Если несколько ячеек excel объединенные...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
05.06.2018, 16:46 2
Цитата Сообщение от Within_t Посмотреть сообщение
но они не переносятся на другую строку
А должны?

У меня вот так:
Перенос текста в объединенных ячейках

, причем даже если я то же самое делаю средствами Excel-я - то получается точно так же, еще выше ячейка не становится, чтобы вместить в себя всю строку.
0
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
05.06.2018, 17:09  [ТС] 3
Т.е. я правильно Вас понял, что высота ячейки не изменится при объедененных ячейках?

Если же в одну ячейку, то все прекрасно
Перенос текста в объединенных ячейках
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
05.06.2018, 17:55 4
Цитата Сообщение от Within_t Посмотреть сообщение
высота ячейки не изменится при объедененных ячейках?
Именно.

You cannot use the AutoFit feature for rows or columns that contain merged cells in Excel
0
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
05.06.2018, 18:32  [ТС] 5
Спасибо за совет)))

Тут только такой выход: посмотреть сколько символов вмещается в заданный диапазон (m), длину самой строки/m = количество строк (n)

C++
1
2
3
String temp = "A1:B"+n
vVarCell=vVarSheet.OlePropertyGet("Range", (WideString)temp.c_dtr());
vVarCell.OleProcedure("Merge");
Если есть еще какие нибудь советы, я во внимании)))

Добавлено через 10 минут
*либо n*умножить на высоту ячейки
0
05.06.2018, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2018, 18:32
Помогаю со студенческими работами здесь

Поиск в объединенных ячейках
Как можно найти ячейку, если она объеденена с другими? Пробовал различные варианты, никак не...

Ссылки в объединенных ячейках и их копирование
Здравствуйте, на вкладке №1 есть таблица, на вкладке №2 таблица с объединенными ячейками и данными...

Удаление содержимого строки при объединенных ячейках
Здравствуйте! Каким образом удалить содержимое строки, если в этой строке есть объединенные...

Формула ДЛСТР выдает сообщение - формулы массива в объединенных ячейках неверны
Здравствуйте, дорогие товарищи. Подскажите что не так. Есть формула по подсчету количества...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru