Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
7-1077879637
Ozone
2004-02-27 14:00
2004.04.25
модель материнской платы


7-1078082494
JIruaasgyy
2004-02-29 22:21
2004.04.25
Какой функцией можно получить системную директорию Windows?


4-1077978175
Defunct
2004-02-28 17:22
2004.04.25
Как убить свой поток?


1-1081113342
vertal
2004-04-05 01:15
2004.04.25
Механизм реализации исключений


1-1081569135
Николаиус
2004-04-10 07:52
2004.04.25
Програма может вносить изменения в реестр?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский