Главная страница
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.026 c
7-1078327433
IceBeerg
2004-03-03 18:23
2004.04.25
HELP!!! Обои на рабочий стол.


1-1081099785
Stratos
2004-04-04 21:29
2004.04.25
WebBrowser


1-1081237348
MikePol
2004-04-06 11:42
2004.04.25
"Подвисание" MDI формы


3-1080659929
Ivan
2004-03-30 19:18
2004.04.25
Вывод сводной информации в GroupFooter


6-1077521717
Val
2004-02-23 10:35
2004.04.25
Как закачать рисунок?