Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
NextGen25
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
#1

Недоступны строчки внизу таблицы Excel при экспорте - C++ Builder

28.11.2015, 21:23. Просмотров 253. Ответов 8
Метки нет (Все метки)

Всем привет, не подскажите в чём проблема, когда происходит экспорт в Excel , после заполнения экспортом таблицы ,не доступны строчки внизу, на скрине выделил, на шаблоне везде проставил буквы цифры только после 10 строчки показываются символы ( а надо чтобы где подчёркнуто)
Всем заранее благодарен)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String fTPL = ExtractFilePath(Application->ExeName) + "Check_tpl.xls";
String fXLS = ExtractFilePath(Application->ExeName) + "Check.xls";
Variant app, books, book, sheet, Rang, vCell, row;
app = CreateOleObject("Excel.Application");
books = app.OlePropertyGet("Workbooks");
books.OleFunction("Open", WideString(fTPL));
book = books.OlePropertyGet("item", 1);
sheet = book.OlePropertyGet("WorkSheets", 1);
vCell = sheet.OlePropertyGet("Cells").OlePropertyGet("Item", 1, 1);
vCell.OlePropertySet("Value", WideString(Header));
const int bounds[4] = {0, ADOTable1->RecordCount, 0, ADOTable1->FieldCount};
Variant vData = VarArrayCreate(bounds, 3, varVariant);
for (int column = 0; column < ADOTable1->FieldCount; ++column)
vData.PutElement(ADOTable1->Fields->Fields[column]->AsVariant, row, column);
Rang = sheet.OlePropertyGet("Range", sheet.OlePropertyGet("Cells", 4, 1),
sheet.OlePropertyGet("Cells", ADOTable1->RecordCount + 3,
ADOTable1->FieldCount));
Rang.OlePropertySet("Value", vData);
app.OlePropertySet("DisplayAlerts", false);
book.OleProcedure("SaveAs", WideString(fXLS));
app.OleProcedure("Quit");
ShowMessage("Готово!\nотчёт записан в файл " + fXLS);
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2015, 21:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Недоступны строчки внизу таблицы Excel при экспорте (C++ Builder):

При сохранении данных таблицы StringGrid в Excel появляется ошибка
При сохранении данных таблицы StringGrid в Excel появляется ошибка. Код пишу в...

Ошибка "Неизвестное имя" при сохранении данных таблицы StringGrid в Excel
При попытке сохранения данных таблицы StringGrid в Excel , появляется сообщение...

Ошибка при экспорте из DBGrid в Excel
При выполнении кода происходит ошибка, приведенная на фото. Помогите понять в...

Ошибка при экспорте таблицы DataGridView в Excel
При нажатии на кнопку выскакивает ошибка. подробности на картинке using...

Установка границ таблицы при экспорте из Delphi в Excel
Программа экспортирует данные из DBGrid на лист экселя. В получаемой в экселе...

При экспорте таблицы Access в Excel логическое поле получить в формате Да/Нет
Здравствуйте. Есть необходимость таблицу экспортировать из Access в Excel....

8
D1973
Модератор
3266 / 2314 / 1159
Регистрация: 21.01.2014
Сообщений: 9,613
Записей в блоге: 3
Завершенные тесты: 1
29.11.2015, 06:31 #2
А где скрин-то?
0
NextGen25
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
29.11.2015, 07:02  [ТС] #3
Цитата Сообщение от D1973 Посмотреть сообщение
А где скрин-то?
Странно вроде загружал
Вот выделенная область не показывает(
А другой скрин это то что в шаблоне
0
Миниатюры
Недоступны строчки внизу таблицы Excel при экспорте   Недоступны строчки внизу таблицы Excel при экспорте  
D1973
Модератор
3266 / 2314 / 1159
Регистрация: 21.01.2014
Сообщений: 9,613
Записей в блоге: 3
Завершенные тесты: 1
29.11.2015, 11:46 #4
Лучший ответ Сообщение было отмечено NextGen25 как решение

Решение

Не, тут маленько не так надо...
В шаблоне у тебя должна быть только "шапка" документа. После "шапки" ты записываешь данные из БД, сколько там строк будет - никому не известно, поэтому писать что-то в "подвале" в шаблоне - это не есть гуд. Порядок действий тут такой:
1. Открываем шаблон
2. Заполняем вариантный массиб данных из БД
3. Пишем вариантный массив в шаблон
(Это все и сейчас так делается)
4. Дописываем после основных данных в отдельные ячейки текст, который должен содержаться в "подвале"
C++
1
2
3
4
5
String Dt = "Число, месяц, год: " + DateToStr(Now());
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 1).OlePropertySet("Value", WideString("Подпись продавца _________________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 5).OlePropertySet("Value", WideString(Dt));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 1).OlePropertySet("Value", WideString("Подпись покупателя _______________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 5).OlePropertySet("Value", WideString(Dt));
5. Сохраняем заполненный шаблон под другим именем и выходим (это тоже сейчас уже есть)
0
NextGen25
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
29.11.2015, 13:33  [ТС] #5
Цитата Сообщение от D1973 Посмотреть сообщение
Не, тут маленько не так надо...
В шаблоне у тебя должна быть только "шапка" документа. После "шапки" ты записываешь данные из БД, сколько там строк будет - никому не известно, поэтому писать что-то в "подвале" в шаблоне - это не есть гуд. Порядок действий тут такой:
1. Открываем шаблон
2. Заполняем вариантный массиб данных из БД
3. Пишем вариантный массив в шаблон
(Это все и сейчас так делается)
4. Дописываем после основных данных в отдельные ячейки текст, который должен содержаться в "подвале"
C++Выделить код
1
2
3
4
5
String Dt = "Число, месяц, год: " + DateToStr(Now());
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 1).OlePropertySet("Value", WideString("Подпись продавца _________________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 5).OlePropertySet("Value", WideString(Dt));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 1).OlePropertySet("Value", WideString("Подпись покупателя _______________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 5).OlePropertySet("Value", WideString(Dt));
5. Сохраняем заполненный шаблон под другим именем и выходим (это тоже сейчас уже есть)
Он на 20 строчку кидает(
Менял цифры у RecordCount но он поднимает только чуть выше(
Можно по подробнее про пункт 2,4?)
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
String fTPL = ExtractFilePath(Application->ExeName) + "Check_tpl.xls";
String fXLS = ExtractFilePath(Application->ExeName) + "Check.xls";
Variant app, books, book, sheet, Rang, vCell, row;
app = CreateOleObject("Excel.Application");
books = app.OlePropertyGet("Workbooks");
books.OleFunction("Open", WideString(fTPL));
book = books.OlePropertyGet("item", 1);
sheet = book.OlePropertyGet("WorkSheets", 1);
vCell = sheet.OlePropertyGet("Cells").OlePropertyGet("Item", 1, 1);
vCell.OlePropertySet("Value", WideString(Header));
const int bounds[4] = {0, ADOTable1->RecordCount, 0, ADOTable1->FieldCount};
Variant vData = VarArrayCreate(bounds, 3, varVariant);
for (int column = 0; column < ADOTable1->FieldCount; ++column)
 
vData.PutElement(ADOTable1->Fields->Fields[column]->AsVariant, row, column);
String Dt = "×èñëî, ìåñÿö, ãîä: " + DateToStr(Now());
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 1).OlePropertySet("Value", WideString("Ïîäïèñü ïðîäГ*ГўГ¶Г* _________________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 5, 5).OlePropertySet("Value", WideString(Dt));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 1).OlePropertySet("Value", WideString("Ïîäïèñü ïîêóïГ*òåëÿ _______________________"));
sheet.OlePropertyGet("Cells").OlePropertyGet("Item", ADOTable1->RecordCount + 7, 5).OlePropertySet("Value", WideString(Dt));
 
Rang = sheet.OlePropertyGet("Range", sheet.OlePropertyGet("Cells", 4, 1),
sheet.OlePropertyGet("Cells", ADOTable1->RecordCount + 3,
ADOTable1->FieldCount));
Rang.OlePropertySet("Value", vData);
app.OlePropertySet("DisplayAlerts", false);
book.OleProcedure("SaveAs", WideString(fXLS));
app.OleProcedure("Quit");
ShowMessage("Ãîòîâî!\nîò÷¸ò Г§Г*ГЇГЁГ±Г*Г* Гў ГґГ*éë " + fXLS);
0
D1973
Модератор
3266 / 2314 / 1159
Регистрация: 21.01.2014
Сообщений: 9,613
Записей в блоге: 3
Завершенные тесты: 1
29.11.2015, 13:55 #6
Ну, значит у тебя в БД куча строк пустых...
0
NextGen25
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
29.11.2015, 16:25  [ТС] #7
Цитата Сообщение от D1973 Посмотреть сообщение
Ну, значит у тебя в БД куча строк пустых...
пересоздал шаблон ничего не изменилось, потом попробовал на пустом excel файле и он на 20 строчку скидывает(
0
D1973
Модератор
3266 / 2314 / 1159
Регистрация: 21.01.2014
Сообщений: 9,613
Записей в блоге: 3
Завершенные тесты: 1
29.11.2015, 19:36 #8
Ты читаешь то, что тебе написали? В БАЗЕ ДАННЫХ строки пустые, в таблице Access. Причем тут шаблон???
0
NextGen25
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
29.11.2015, 23:49  [ТС] #9
Цитата Сообщение от D1973 Посмотреть сообщение
Ты читаешь то, что тебе написали? В БАЗЕ ДАННЫХ строки пустые, в таблице Access. Причем тут шаблон???
Прощу прошения были пустые строки и много(
Когда в бд 3 записи он переносить записи с кода на 5 строчку
а когда записей 10 то он перекидывает на 12 строчку, получается он просто скрывает другие записи?
Просто выглядит не очень хорошо, запись на 3 строчке, а текст в коде на 12 и чем больше записей в бд тем ниже он кидает(
0
29.11.2015, 23:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2015, 23:49
Привет! Вот еще темы с решениями:

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

кодировкой при экспорте в Excel
Доброго времени суток всем!!!! Response.ContentType = &quot;text/csv&quot;;...

Ошибка при экспорте в Excel
Здравствуйте! При нажатии на кнопку Excel получаю ошибку: Control 'GridView1'...

Названия при экспорте в Excel
Добрый день, может кто подскажет, как разрешить вот такие проблемки: Есть...


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

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

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