|
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 »
|
|
Я всего как месяц пересел на 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 »
|
|
Окошко сохранения - это T SaveDialog. Не надо вводить в заблуждение ни себя ни того, кто будет проверять курсовую. Положи на форму 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 »
|
|
Окошко сохранения - это 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());
|
|
|
|
|
|