Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение в Excel2000 и Excel2002, не сохраняется :( 
V
    Опции темы
Albinos_x
Дата 24.5.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



а вообще селесообразней сделать через:
Код
...
ExcelApp.ActiveWorkbook.SaveAs(...);
...

т.к. в момент работы программы может быть открыто несколько книг... тогда сохранится не та, которую мы хотим...
а ещё целесообразней сделать так:
Код
...
  icid := LOCALE_SYSTEM_DEFAULT;
  ExcelApp.AutoQuit := true;
  ExcelApp.Visible[icid] := false;
  ExcelApp.AutoConnect := true;
  ExcelWorkbook.ConnectTo(ExcelApp.Workbooks.Add(EmptyParam,icid));
...
  ExcelWorkbook.SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam,    
                                                   EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,    
                                                   EmptyParam, EmptyParam, 0);
...

тогда различных непонятных косяков не будет...  

Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 20:22


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 14.3.2006

Репутация: 1
Всего: 1



Блин а в ХР так не катит, грит не хватает параметров !!! 
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



да точно мой косяк... обсчитался... прошу прощение за введение в заблуждение...
Код
...
ExcelWorkbook.SaveAs(s, EmptyParam, EmptyParam, EmptyParam,
                      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                      EmptyParam,EmptyParam, EmptyParam,0);
...


Добавлено @ 20:49 
случайно параметр пропустил:

procedure SaveAs( FileName:OleVariant ; FileFormat:OleVariant ; Password:OleVariant ; WriteResPassword:OleVariant ; 
ReadOnlyRecomended:OleVariant ; CreateBackUp:OleVariant ; AccesMode:XLSaveAsAccessMode ; ConflictResolution:OleVariant ; AddtoMru:OleVariant ; 
TextCodePage:OleVariant ; TextVisualLayout:OleVariant ; Local:OleVariant; lcid:Integer) 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.5.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



сделай так:
Код
...
if (StrToInt(Copy(ExcelApplication1.Version[icid],1,pos('.',ExcelApplication1.Version[icid])-1)))=9 then
    (ExcelWorkbook1 as Excel2000.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam,0)
    else
    (ExcelWorkbook1 as ExcelXP.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, EmptyParam,
                                                    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                                    EmptyParam,EmptyParam, EmptyParam,0); 
...


это первое различие, которое я нашёл между 2000 и 2002... пасиб... надо в свою статью внести изменения...

Добавлено @ 21:16 
т.е. для твоего кода:
Код

if (StrToInt(Copy(ExcelApp.Version[icid],1,pos('.',ExcelApp.Version[icid])-1)))=9 then    
    (ExcelWorkbook as Excel2000.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, EmptyParam,    
                                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,    
                                                      EmptyParam, EmptyParam,0)    
    else    
    (ExcelWorkbook as ExcelXP.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, EmptyParam,    
                                                    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,    
                                                    EmptyParam,EmptyParam, EmptyParam,0); 


соответственно, если нужно, можно заменить ExcelWorkbook на ExcelApp.ActiveWorkbook или ExcelApp.Workbooks[1]... 

Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 21:10


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 14.3.2006

Репутация: 1
Всего: 1



У меня на вот это ругается:
EWs.ConnectTo(ExcelApp.Workbooks.Add(EmptyParam,icid));
Говорит Incompatible types '_Workbook' and '_WorkSheet'

Добавлено @ 21:32 
А можно про эту строчку поподробнее
if (StrToInt(Copy(ExcelApp.Version[icid],1,pos('.',ExcelApp.Version[icid])-1)))=9 then
Что здесь что значит ???
а то вполне возможно придётся переделывать под office2003  smile  
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



понятное дело... поэтому я и написал переменную
ExcelWorkbook
т.к. это книга, а у тебя EWs, как понял является листом книги...

если я правильно понял, то ты делаешь через стандартные компоненты... там на закладке Servers есть компоненты:
ExcelApplication1
ExcelWorkbook1
ExcelWorkSheet1

Добавлено @ 21:39 
Цитата(Litta @  24.5.2006,  21:17 Найти цитируемый пост)
Что здесь что значит ???

эту статью читал?

ExcelApp.Version[icid] вернёт строку:
Excel97 = "8.0"
Excel2000 = "9.0"
Excel2002 (XP) = "10.0"
Excel2003 =  "11.0"  


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 14.3.2006

Репутация: 1
Всего: 1



Статью читал, правда давненько, уже подзабыл smile 
ИСпользую стандартные компоненты с Servers, правда ExcelWorkbook1 на форму не кидаю, так обхожусь...
Теперь такая штуковина: 
Если написать так
    (EWs as ExcelXP.ExcelWorkbook).SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam,
                                                    EmptyParam, EmptyParam, EmptyParam, EmptyParam,  EmptyParam,
                                                    EmptyParam,EmptyParam, EmptyParam,0);

ТО выскакивает ... Could not convert variant of type (Error) into type (Boolean)

Если же написать так:

    (EWs as ExcelXP.ExcelWorkbook).SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam,
                                                    EmptyParam, EmptyParam, xlNoChange, EmptyParam, EmptyParam,
                                                    EmptyParam,EmptyParam, EmptyParam,0);

ТО получаем Interface not supported
Вот же блин  smile   

Это сообщение отредактировал(а) Litta - 24.5.2006, 22:12
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



у тебя какая версия делфи?

У меня всё нормально работает... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 14.3.2006

Репутация: 1
Всего: 1



Delphi 7
Может uses какой-нить надо подключить ? (Excel2000 я подключил, так не работало бы smile )
А то иногда так бывает, когда пишешь с начала, то всё ок, а когда во что-то внедряешь - приходится самому добавлять всякие uses-ы 
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Litta @  24.5.2006,  22:06 Найти цитируемый пост)
EWs

для страницы метод сохранения другой... там нет параметров:
AccesMode:XLSaveAsAccessMode ; 
ConflictResolution:OleVariant ;
Local:OleVariant

там вообще достаточно одного параметра FileName.... и не нужно далать разделение между версиями... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.5.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



и делать тогда лучше так:
Код
...
 (EWs as ExcelXP.ExcelWorkSheet)...
...

а проще вообще:
Код
...
EWs.SaveAs(FileName);
...
 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 25.5.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 14.3.2006

Репутация: 1
Всего: 1



Ура, я разобрался !!! Всё гениальное просто  smile :
FileName - имя файла - сделал WideString и всё заработало !!!
И на 2000-м и на ХР !!! (надеюсь на 2003-й это тоже распространится  smile )
Большое спасибо за помощь !!!!!!!
PS: Если написать EWs.SaveAs(FileName) - то вылетает ошибка опять кажется аксесс виолэйшн ин 00000000 ... 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.