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

Вниз

База *.xls через ADO в Delphi   Найти похожие ветки 

 
Yurisimus   (2005-07-26 14:17) [0]

Уважаемые эксперты, проблема с базой Excel. Мне нужно программно создать Excel файл (с этим проблем нет) и потом программно же указать соответствующие форматы ячеек для столбцов (типа float, string, date, integer)... Если хотите предложить записать макрос в Excel, то лучше не отвечайте... Мне бы сам код посмотреть...


 
Nikolay M. ©   (2005-07-26 14:30) [1]

А почему обязательно через АДО?
Зачем суп есть вилкой, если есть ложка?


 
Yurisimus   (2005-07-26 14:41) [2]

О ложке поподробнее напиши плиз, а через адо потому как нужно делать не маленькие запросы к базе, поэтому подцепляюсь через ADOQuery...


 
Alex_Bredin ©   (2005-07-26 14:49) [3]

http://delphibase.spb.ru/?action=viewtopic&topic=winoffice


 
Nikolay M. ©   (2005-07-26 14:57) [4]

Ты уж раздели мух от котлет.
Сначала ты говоришь

> программно же указать соответствующие форматы ячеек для
> столбцов (типа float, string, date, integer)...

а потом вдруг

> нужно делать не маленькие запросы к базе

Или для тебя это одно и то же?

http://www.delphikingdom.com/asp/section.asp?id=16
Цикл статей "По волнам интеграции" ну и все, что рядом.


 
msguns ©   (2005-07-26 15:01) [5]

> программно же указать соответствующие форматы ячеек для
> столбцов (типа float, string, date, integer)...

Таких форматов у екселя нетути


 
Yurisimus   (2005-07-26 15:07) [6]

Николай, для тебя объясню поконкретнее...
Программа при включении проверяет создана ли база на диске, и если нет, то создает Excel файл программно, вот тут и нужно указать при создании формат ячеек, чтобы данные, которые будут забиваться отображались потом нормально. А твоё сравнение абсолютно двух разных вещей, таких как запрос и формат данных выглядит туповато...


 
Yurisimus   (2005-07-26 15:08) [7]

Николай, для тебя объясню поконкретнее...
Программа при включении проверяет создана ли база на диске, и если нет, то создает Excel файл программно, вот тут и нужно указать при создании формат ячеек, чтобы данные, которые будут забиваться отображались потом нормально. А твоё сравнение абсолютно двух разных вещей, таких как запрос и формат данных выглядит туповато...


 
Lexer ©   (2005-07-26 15:12) [8]

>Yurisimus, вот я как делаю:
function FieldToVariant(Field: TField): OLEVariant;
begin
 Result := EmptyStr;
 case Field.DataType of
   ftString, ftFixedChar, ftWideString, ftMemo, ftFmtMemo:
     Result := """" + Field.AsString;
   ftSmallint, ftInteger, ftWord, ftLargeint, ftAutoInc:
     Result := Field.AsInteger;
   ftFloat, ftCurrency, ftBCD:
     if (Field is TFloatField) and TFloatField(Field).Currency then
       Result := DoubleRound(Field.AsFloat, 2)
     else Result := Field.AsFloat;
   ftBoolean: Result :=
     Field.AsBoolean;
   ftDate, ftTime, ftDateTime:
     Result := Field.AsDateTime;
 end;
end;
********************************************

Ячейка := FieldToVariant(DataSet.Fields[I]);


 
msguns ©   (2005-07-26 15:45) [9]

Грузим ексель. Выбираем Сервис>Макрос>Начать запись>Ok
Щелкаем по ячейкам и назначаем им нужные форматы.
Сервис>Макрос>Остановить запись.
Сервис>Макрос>Макрос1>Войти

Смотрим на что-то вроде

   Selection.NumberFormat = "#,##0.00$"
   Columns("B:B").ColumnWidth = 17.29
   Range("B1").Select
   Selection.NumberFormat = "dd/mm/yy;@"
   Range("C1").Select
   Selection.NumberFormat = "@"
   Range("D1").Select
   Selection.NumberFormat = "0"
   Range("E1").Select
   Selection.NumberFormat = "#,##0.00$"


Потом все это по-обезьяньи копируем в код, в котором фиксируем Range.
Жмякаем F9, прога отрабатывает, открываем ексель и, о чудо! в чейках нужный формат ;)


 
Nikolay M. ©   (2005-07-26 15:47) [10]


> Yurisimus

Туповато выглядит твои неумение задавать вопросы и путаница с терминологией.
Ответа, зачем нужно форматировать ячейки екселя именно через АДО, от тебя не поступило. Как это сделать нормальными способами, сказано в [3] и [4].


 
Yurisimus   (2005-07-27 07:34) [11]

Lexer и msguns(удивлен твоему нормальному ответу) спасибо, попробую сейчас...

Николаю:
1. Моё неумение задавать вопросы объясняется тем, что я обошел систему форума и задал вопрос по OLE в базах, потому что в подразделе форума по OLE очень редко отвечают и вообще заглядывают туда...
2. С терминологией я не путаюсь...
3. Почему именно через ADO я уже ответил в пункте [3]...

З.Ы. Еще Никола вопросы будут?


 
Nikolay M. ©   (2005-07-27 09:49) [12]


> [11]

Помогать хаму желания не имею.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
1-1123746640
AlexBo
2005-08-11 11:50
2005.09.04
Экстренный выход из процедуры


9-1115410889
Qwertyk
2005-05-07 00:21
2005.09.04
Карты


1-1124077500
Laymer
2005-08-15 07:45
2005.09.04
Word


3-1122275206
SLP
2005-07-25 11:06
2005.09.04
timeout expired


3-1122290285
Layner
2005-07-25 15:18
2005.09.04
FIREBIRD / COLLATE PXW_CYRL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский