Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.032 c
11-1064815249
bfg1000ke
2003-09-29 10:00
2004.04.25
Реестр


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


14-1081134433
Паниковский
2004-04-05 07:07
2004.04.25
"Мир программирования"


1-1081250493
Эли
2004-04-06 15:21
2004.04.25
Цвет выделенного текста и шрифта в Memo


1-1081151863
infom
2004-04-05 11:57
2004.04.25
Вывод листинга программы в Word




   Наверх