Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Delphi+Excel   Найти похожие ветки 

 
Тимохов ©   (2004-04-06 15:47) [0]

Есть следующий упрощенный код:

procedure TForm_Tests.Button6Click(Sender: TObject);
var
  v: olevariant;
begin
  v := CreateOleObject("Excel.Application");
  v.Workbooks.Open(FileName := "d:\0\123.xls");
  v.ActiveWorkBook.ActiveSheet.range["a1"] := "asdfg";
  v.ActiveWorkBook.SaveAs(FileName := "d:\0\0.xls");
  v.Visible := True;
  v := Unassigned;
end;


В результате открывается некий шиблон, заполнается одна клетка, "сохраняется как" и показывается на экране. Все вроде как работает.
Далее наблюдается интересный эффект: если не закрывая файла excel в Windows Commandere пойти и нажать enter на файле "d:\0\0.xls", то excel вообще пропадает - его можно найти и убить только в диспетчере задач.

В ходе опыта было установлено, что такого бага нет (т.е. после нажатия enter на "d:\0\0.xls" как и положено все показывается на экране), если v.Visible := True поставить до v.Workbooks.Open(FileName := "d:\0\123.xls").

Офис 2000. Проверял на хр и на 2003 - там все тоже самое.

Как вы думаете, в чем может быть дело?


 
Тимохов ©   (2004-04-06 15:52) [1]

Блин, обнаружил еще факт не понятной природы.
Если сделать так
1. Выполнить указанный код
2. через windows commander открыть ДРУГОЙ факл excel
3. через windows commander открыть d:\0\0.xls

То также все работает...

:(((

До чего же гловищная это программа, excel, почему же народ ее так любит :(((((


 
Тимохов ©   (2004-04-09 12:34) [2]

Сообщаю ответ на свой вопрос - может кому будет полезно.

Надо написать так.
procedure TForm_Tests.Button6Click(Sender: TObject);
var
 v: olevariant;
begin
 v := CreateOleObject("Excel.Application");
 v.Workbooks.Open(FileName := "d:\0\123.xls");
 v.ActiveWorkBook.ActiveSheet.range["a1"] := "asdfg";
 v.ActiveWorkBook.SaveAs(FileName := "d:\0\0.xls");
 v.Visible := True;
 v.UserControl := True;  
 v := Unassigned;
end;


Ответ был получен тут http://www.delphikingdom.com/asp/answer.asp?IDAnswer=21646


 
Leonid ©   (2004-04-09 13:35) [3]

А что такое UserControl ?


 
Гаврила   (2004-04-09 13:43) [4]

УХ
а может и у меня теперь заработает...
я по аналогичным проблемам с word бьюсь уже достаточно давно.

сапожники млин...


 
Тимохов ©   (2004-04-09 13:48) [5]


> Leonid ©   (09.04.04 13:35) [3]

Хелп не судьба почитать? :))))))


> Гаврила   (09.04.04 13:43) [4]

Да блин OLE+Офис дофига недокументированных фишек. Когда справишься, не можешь понять почему работает...


 
Гаврила   (2004-04-09 13:59) [6]

>>Тимохов ©   (09.04.04 13:48) [5]

Фишка то в принципе документированная, хотя такое поведение в справке не описано.
Вообще OLE + Офис реализовано через Ж. Приычем через такую Ж, что вообще редко когда такое безобразие увидишь :-(((


 
Тимохов ©   (2004-04-09 14:06) [7]


> Гаврила   (09.04.04 13:59) [6]

точно, полная Ж.

Мне на вопрос ответил тот же человек, котрый писал про Ж в русском excel - пропрос был про форматы. В принципе эту статью можно найти на королевстве (пойти по линку, и начать все материалы автора).

Мое решение сейчас такое - ole для обратной совместимости, все новое делаю без всяких шаблонов - сразу в xml. Правда, тогда есть ограничение - офис 2002, xp, 2003.


 
YurikGl ©   (2004-04-09 14:28) [8]

Работаю через TExcelApplication, подобных проблем не наблюдаю.



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
1-1081345696
LD
2004-04-07 17:48
2004.04.25
move для string


3-1080199169
DmitryNekl
2004-03-25 10:19
2004.04.25
Тоже фильтрация, но другая


3-1080272370
nik7777
2004-03-26 06:39
2004.04.25
Отловить одинаковые данные в БД


11-1065480318
Boguslaw
2003-10-07 02:45
2004.04.25
Change focus to the next control in focus


3-1080306252
russko
2004-03-26 16:04
2004.04.25
Работа с ДАТАМИ