Главная страница
    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.034 c
1-1081622318
Paladin
2004-04-10 22:38
2004.04.25
Всплывающие подсказки


1-1081449159
tivispider
2004-04-08 22:32
2004.04.25
Как узнать, что нажата клавиша Delete (Del)?


1-1081148741
zxcvb
2004-04-05 11:05
2004.04.25
Как в ячейки StringGrid сделать CheckBox?


11-1056115592
Gandalf
2003-06-20 17:26
2004.04.25
AutoWars результаты турнира


14-1080915958
Delphi5.01
2004-04-02 18:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский