17 / 16 / 1
Регистрация: 03.11.2009
Сообщений: 36
1

Из TStringList в Excel

01.10.2011, 07:13. Показов 1936. Ответов 3
Метки нет (Все метки)

Народ подскажите кто нибудь так делал
мой код
C++
1
2
3
4
5
ExcelInitOpen("Excel","");
AnsiString s = "A1:A"+IntToStr(List->Count+1);
Variant range = App.OlePropertyGet("Range", s.c_str());
range.OlePropertySet("Value",List->Text.c_str());
App.OlePropertySet("Visible",true);
List указатель на TStringList при выполнении выводится окно на котором просто написано "Ошибка" без указания кодов ошибки
на эту строку
C++
1
range.OlePropertySet("Value",List->Text.c_str());
Я понимаю что все это можно сделать и через цикл ну вот хочется как то по быстрому передать данные,
в List->Count порядка 15 000 строк так что передача через цикл довольно долгое занятие.
За ранее спасибо

Добавлено через 20 часов 40 минут
Подумал и решил использовать
C++
1
2
3
int Bounds[4]={0,10,0,9000}; // 10 -fild 9000-
in=0;
A=VarArrayCreate(Bounds,3, varVariant);
И заполняю
C++
1
2
3
4
5
6
void __fastcall TForm1::AutoScroll1(TDataSet *DataSet)
{
A.PutElement(DataSet->FieldByName("FAM")->AsString,0,in);
A.PutElement(DataSet->FieldByName("DEPT")->AsString,1,in);
in++;
}
Ну вот только проблема не могу передать в Excel

C++
1
2
3
4
5
6
7
8
ShowMessage(A.GetElement(0,7000));
ShowMessage(A.GetElement(1,7000));
ExcelInitOpen("Excel","");
AnsiString s = "A1:B"+IntToStr(in);
Variant range = App.OlePropertyGet("Range", s.c_str());
range.OlePropertySet("Value",A);
App.OlePropertySet("Visible",true);
App.Clear();
Причем ShowMessage выводят нормальную информацию может кто подскажет

Нашел на Делфи но не знаю как переделать под Builder

Delphi
1
ExcelWorksheet1.Range[ExcelWorksheet1.Cells.Item[1, 1], ExcelWorksheet1.Cells.Item[Rows, Cols]].Value2 := Arr;
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2011, 07:13
Ответы с готовыми решениями:

E2034 Cannot convert 'TStringList' to 'TStringList *'
Всем привет! Пытаюсь сделать так чтобы можно было выбрать неограниченное количество файлов, но...

Неясности с TStringList. Как найти наибольший элемент в TStringList?
Добрый день. Проблема следующая: мне надо в TStringList найти самую длинную строчку. Пытаюсь...

Зашифровать TStringList, сохранить, прочитать, получить исходный TStringList
Здравствуйте. Требуется решение следующей задачи: Зашифровать TStringList (количество строк...

TStringList
как получить последний символ i ой строки из StringListа????

3
LK
Заблокирован
01.10.2011, 07:20 2
для начала идем сюда Работа с OLE-сервером Excel
0
17 / 16 / 1
Регистрация: 03.11.2009
Сообщений: 36
01.10.2011, 07:57  [ТС] 3
Цитата Сообщение от LK Посмотреть сообщение
для начала идем сюда Работа с OLE-сервером Excel
Спасибо это уже читал

Нашел это
https://www.cyberforum.ru/cpp-... 35861.html

Только не нашел реализацию этой функции
C++
1
Variant vRange = getRange(Left , Top , Left + Grid->ColCount - 1 , Top + Grid->RowCount - 1);
0
17 / 16 / 1
Регистрация: 03.11.2009
Сообщений: 36
04.10.2011, 03:43  [ТС] 4
Решил я эту задачу так для будушего
1. Выделяем вариантный массиы (вот тут то и был качяк перепутал кол строк и колличество столбцов)
C++
1
2
3
int Bounds[4]={0,DataSet->RecordCount,0,11};
A=VarArrayCreate(Bounds,3, varVariant);
in=0;
Заполняем его
C++
1
2
3
4
5
6
7
8
9
10
A.PutElement(DataSet->FieldByName("DEPT")->AsString,in,0);
A.PutElement(DataSet->FieldByName("TN")->AsString,in,1);
A.PutElement(DataSet->FieldByName("FAM")->AsString,in,2);
A.PutElement(DataSet->FieldByName("IMQ")->AsString,in,3);
A.PutElement(DataSet->FieldByName("OTCH")->AsString,in,4);
A.PutElement(DataSet->FieldByName("profes")->AsString,in,5);
A.PutElement(DataSet->FieldByName("razrqd")->AsString,in,6);
A.PutElement(DataSet->FieldByName("oklad")->AsString,in,7);
A.PutElement(DataSet->FieldByName("kategor")->AsString,in,8);
A.PutElement(DataSet->FieldByName("d_out")->AsString,in,9);
ну и передаем в Excel
C++
1
2
3
4
EXCEL_APP *q1=new EXCEL_APP();
q1->PutRangeVal(1,1,in-3,11,A);
q1->Show();
delete q1;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2011, 03:43
Помогаю со студенческими работами здесь

Tstringlist
l : integer l , k : integer ; s

TStringList
есть переменные mem,send,mema:TStringList; дает ошибку на строке 1 mema:=mem+send;...

TStringList
Есть текстовый файл, в котором записаны слова по одному слову в строке. Могут встречаться пустые...

TStringList
Как доступится к конкретному символу обьекта этого класа?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru