C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: StringGrid В Excel и обратно !!!  (Прочитано 16005 раз)
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


StringGrid В Excel и обратно !!!
« : 23 Февраль 2012, 03:25:16 »

Привет, дорогие форумчани
Я всего как месяц пересел на builder c++ (до этого сидел на delphi) по этому много чего ещо не знаю. Возник такой вопрос: Как Записать в stringGrid значения с файла
Excel.

В эксель записать из stringGrid получилось а вот наоборот не выходит  
Помогите а(((
Вот код: Записи в эксель , а надо обратно.
Код
void __fastcall TForm2::N2Click(TObject *Sender)
{
WideString str;
TStringList *sl = new TStringList;
for(int i = 0 ; iStringGrid1->RowCount ;++i)
{
for(int j = 0; j StringGrid1->ColCount;++j)
str +=StringGrid1->Cells[j][i]+ "\t";
sl->Add(Trim(str));
str = "\n\r" ;
}
if (SaveDialog1->Execute())
sl->SaveToFile(SaveDialog1->FileName);
delete sl;
}
//---------------------------------------------------------------------------
 
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: StringGrid В Excel и обратно !!!
« Ответ #1 : 23 Февраль 2012, 10:51:19 »

Цитата: musicdawn от 23 Февраль 2012, 03:25:16
Я всего как месяц пересел на builder c++ (до этого сидел на delphi) по этому много чего ещо не знаю.
Если сидел на Дельфи - должен знать о наличии DRKB. Там приведено несколько способов экспорта данных StringGrid->XLS, и импорта StringGrid
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #2 : 23 Февраль 2012, 11:34:29 »

Увы не знал но что -то не выходит
Можешь кусок кода написать -буду очень благодарен
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: StringGrid В Excel и обратно !!!
« Ответ #3 : 23 Февраль 2012, 12:20:44 »

По второй ссылке есть кусок кода. С ним что-то не так?
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #4 : 23 Февраль 2012, 12:25:20 »

Все вроде бы работает но при сохранении (когда сам ехе-шник уже запущен и жмешь кнопку save ), а точнее нажатии на кнопку где прописано
Код
void __fastcall TForm2::Button2Click(TObject *Sender)
{
 
Variant app = CreateOleObject("Excel.Application");
//CreateOleObject("Excel.Application");
Variant wbs = app.OlePropertyGet("Workbooks");
Variant wb = wbs.OleFunction("Open", "OpenDialog1->FileName");
Variant wss = wb.OlePropertyGet("Worksheets");
Variant ws = wss.OlePropertyGet("Item", 1);
 
for (int r = 0; r StringGrid1->RowCount; r++)
for (int c = 0; c StringGrid1->ColCount; c++)
{
Variant cell = ws.OlePropertyGet("Cells", r + 1, c + 1);
cell.OlePropertySet("Value", WideString(StringGrid1->Cells[c][r]));
}
 
wb.OleProcedure("Save");
app.OleProcedure("Quit");
}

Выдает ошибку :  Неверный тип переменной
 
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #5 : 23 Февраль 2012, 12:31:37 »

вроде дело в этой строчке
Variant wb = wbs.OleFunction("Open", "D:\\Grid.xls");

поэтому заменил её на
Variant wb = wbs.OleFunction("Open", ""OpenDialog1->FileName");

Но таже хрень с той кнопкой !!!

HEEEELP ME!!!!
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: StringGrid В Excel и обратно !!!
« Ответ #6 : 23 Февраль 2012, 12:44:11 »

Во-первых, не "OpenDialog1->FileName", а просто OpenDialog1->FileName (ты же не хочешь, чтобы открылся файл "OpenDialog1->FileName.XLS", правда?) А во-вторых,
Код
Variant wb = wbs.OleFunction("Open", WideString(OpenDialog1->FileName));
должен тебе помочь
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #7 : 23 Февраль 2012, 12:55:40 »

 А во-вторых,
Код
Variant wb = wbs.OleFunction("Open", WideString(OpenDialog1->FileName));
должен тебе помочь
[/quote]

При нажатии само окно открытия OpenDialog1 не открывается , а сразу пишет " файл 'gride.txt'
уже существует. Заменить?" Почему тхт и где само окошко сохранения?

Если прописать вот так
Variant wb = wbs.OleFunction("Open", OpenDialog1->FileName.c_str());

то говорит что просто не нашло файл, проверти правильность имени и тд.

Помоги а, курсовая  плачет  
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: StringGrid В Excel и обратно !!!
« Ответ #8 : 23 Февраль 2012, 13:01:08 »

Окошко сохранения - это TSaveDialog. Не надо вводить в заблуждение ни себя ни того, кто будет проверять курсовую. Положи на форму TSaveDialog и вызывай так:

Код
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(SaveDialog1->Execute())
{
Variant app = CreateOleObject("Excel.Application");
Variant wbs = app.OlePropertyGet("Workbooks");
Variant wb = wbs.OleFunction("Open", WideString(SaveDialog1->FileName));
// дальше по тексту
app.OleProcedure("Quit");
}
}
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #9 : 23 Февраль 2012, 13:09:30 »

слышал можно через XLSReadWrite открыть но в rad studio xe2 его нет((
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #10 : 23 Февраль 2012, 13:14:30 »

Цитата: volvo877 от 23 Февраль 2012, 13:01:08
Окошко сохранения - это TSaveDialog. Не надо вводить в заблуждение ни себя ни того, кто будет проверять курсовую.


Извини я имел ввиду  TOpenDialog. Просто уже долго работаю - закипел
Как хоть как-нибудь добавить в стринг грид из ексель???,
« Последнее редактирование: 23 Февраль 2012, 13:26:07 от musicdawn » Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #11 : 23 Февраль 2012, 13:58:03 »

хм а циклом заполнить стрингГрид не никак?
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #12 : 23 Февраль 2012, 13:59:48 »

Ты не понял, мне надо заполнить данными что лежат в xls файле
Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #13 : 23 Февраль 2012, 14:08:36 »

Ну так этож проще паренной репы =)
получать данные из экселя умееш?
если будеш указывать количество ячеек и строк руками для импорта ничего страшного? или же стоит искать данные руками?
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #14 : 23 Февраль 2012, 14:13:19 »

Цитировать
Ну так этож проще паренной репы =)
получать данные из экселя умееш?
В том то и дело что нет, а надо всего лишь занести в стрингГрид данные из файла ексель (*.xls)  
как указывать копируемые ячейки мне всеравно лишь бы скопировало в стринГрид  

Хелп !!!!
« Последнее редактирование: 23 Февраль 2012, 14:19:48 от musicdawn » Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #15 : 23 Февраль 2012, 14:48:33 »

жди
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #16 : 23 Февраль 2012, 14:49:29 »

Ты моя последняя надежда, ЖДУ
Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #17 : 23 Февраль 2012, 14:58:03 »

Вот там, тестовый эксель фаил лежит открой его с помощью кнопки баттон 1  
затем отпишись так ли тебе было нужно
мой класс работы с экселем приложен думаю разберешся, он правда тут сырой и косячный но для такой мелочи пойдет..
Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #18 : 23 Февраль 2012, 15:04:10 »

думаю развернуть циклы в эксель будет не сложно....
хм вроде срочно было...
« Последнее редактирование: 23 Февраль 2012, 15:16:24 от Mimik » Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #19 : 23 Февраль 2012, 17:55:54 »

Ругается на Workbooks.Exec(Procedure("Open") а именно на оператор
 
Можешь попроще описать, именно в самой кнопке
Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #20 : 23 Февраль 2012, 18:56:33 »

ничего не должно ругатся, какая у тебя версия билдера?
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #21 : 23 Февраль 2012, 19:49:59 »

rad studio xe2: c++ builder
напиши здесь кусок рабочего кода, самый примитивный- лишь бы хоть что-то скопировал из екселя в стрингГрид  

Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #22 : 23 Февраль 2012, 20:10:09 »

Бло. в моем класе работы с экселем, посмотри функция GetValue
Ты Тестил мою прожку? пробовал ей?
оберни ИмяФайла в АНсиСтринг
Код
 Workbooks.Exec(Procedure("Open") AnsiString(FileName) );
 

Так запарило это, переделываю корявый клас работы с экселем. щас все ок будет
« Последнее редактирование: 23 Февраль 2012, 21:15:08 от Mimik » Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #23 : 23 Февраль 2012, 22:17:57 »

Итак проблем еще актуален? я переделал клас переделал удачно, все отладил работает на RadStudio надо?
я тут понимаеш ради него отбросил книги по DirectX. а он пропал понимаеш!
« Последнее редактирование: 23 Февраль 2012, 23:47:52 от Mimik » Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #24 : 23 Февраль 2012, 23:47:00 »

о да!!! Ещо как...
Записан
Mimik
Если ваша проблема не ищется в поиске и гугле, если ее нет в книгах, то я стану на нее тратить время....
Участник


Сказали спасибо: +90/-14
Offline

Сообщений: 661

TestNewOut


Re: StringGrid В Excel и обратно !!!
« Ответ #25 : 23 Февраль 2012, 23:50:31 »

на вот =)  благодарности в валютно-рублевом эквиваленте приветствуются =)))
Записан
musicdawn
Участник


Сказали спасибо: +1/-6
Offline

Сообщений: 93


Re: StringGrid В Excel и обратно !!!
« Ответ #26 : 24 Февраль 2012, 00:31:15 »

Программа работает - Всем спасибо!!!!!
Записан
CodeTavr
новенький


Сказали спасибо: +0/-0
Offline

Сообщений: 1


Re: StringGrid В Excel и обратно !!!
« Ответ #27 : 17 Май 2016, 14:12:12 »

Добрый день, товарищи! Вижу, что тема 4х-летней давности, но вот теперь и я столкнулся с тем же.
По всей видимости, решение было найдено, однако проект с исходниками уже к сожалению загрузке не подлежит :-( что очень печально. Может ли кто-нибудь выложить его повторно?
Ну, или помочь разобраться со следующим: пробовал, приведенной выше код. Как и автор, я столкнулся с проблемой в строке
Код
Variant wb = wbs.OleFunction("Open", WideString(SaveDialog1->FileName));
Тоже "Выдает ошибку :  Неверный тип переменной"
Пробовал менять WideString и на Анси и просто Стринг. Все равно ошибка. Подскажите в чем тут дело?
Спасибо заранее!
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #28 : 25 Май 2016, 05:55:03 »

А так?
Код
Variant wb = wbs.OleFunction("Open", (SaveDialog1->FileName).w_str());
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.085 секунд. Запросов: 21.