Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как из БД засунуть информацию в Excel 2000.


edit_box ©   (2003-07-18 11:04:00) 

Пробывал делать в Excel 97, получается, а в 2000 не хочет.
Наверно Microsoft сделало какието изменения в Ole.
Если кто работал, то помогите.


Hawk2   (2003-08-11 11:24:00) [1]

Посмотри на Королевстве Делфи статейки (По волнам интеграции) там три части (должны быть). Там сам решишь каким способом быстрее и как.


Карелин Артем   (2003-08-11 10:34:00) [2]

Alexey Nepryahin © (25.07.03 20:48)
Range["A1","A2"].Select;- это лишнее!


Alexey Nepryahin   (2003-07-25 20:48:00) [3]

Попробуй следующее:
Range["A1","A2"].Select;
Range["A1","A2"].Formula := Чего вставлять;


Serginio   (2003-07-25 19:15:00) [4]

Использовать ОлеКонтейнер.


vvm   (2003-07-25 18:48:00) [5]

Можно оставить Excel97. Работает с MS Office 2000


Boogier   (2003-07-25 13:30:00) [6]

Можно использовать именованные параметры

Напирмер:
Excel.Workbooks.Open(Filename:="C:\z\file1.xls")


интересующийся   (2003-07-25 11:09:00) [7]

в Excele метод Sort имеет одинаковые параметры в 97 и ХР, и другие в 2000


Карелин Артем   (2003-07-25 10:32:00) [8]

>Карелин Артем Напрямую - это CreateOLEObject
Оно самое.


Alex_***   (2003-07-25 09:21:00) [9]

Кстати, если нужно просто выбросить данные в сетку, то можно сделать текстовый файл, и выбрасывать в него данные через tab - разделитель столбцов. разделитель строк - стандартный 0xD, 0xA. Называешь его *.xls и вперед.


AbrosimovA   (2003-07-25 09:01:00) [10]

Есть ещё один способ, "пихать" данные в Excel из базы, о котором здесь возможно никто не знает или не хочет упоминать.
Хотя этот способ для тех, кто не боится использовать нестандартные компоненты.
А теперь подробнее остановимся на предлагаемым мной методе.
1. Устанавливаем библиотеку невизуальных компонентов FlexCel.
2. Кладем на форму, а можно в модуль данных два из них -
- XLSAdapter и FlexCelReport.
3. Свойства компонентов:
XLSAdapter.SaveFormat=[snXLS];
FlexCelReport.Adapter=XLSAdapter;
4. Кладем на форму кнопку "Сохранить".

procedure TMainForm.Button1Click(Sender: TObject);
var PathEx: string;
begin
if SaveDialog1.Execute then PathEx:=Savedialog1.FileName;
if FileExists(PathEx) then DeleteFile(PathEx);
if PathEx<>"" then
begin
DataModule1.FlexcelReport1.FileName:=PathEx;
DataModule1.FlexcelReport1.Run;
end;
end;


5. Создаем файл шаблона, например, template.xls следующего вида:

-----------------------------------------------------------------
Список работников цеха ППП

ФИО Адрес Должность ( См. выше)

Есть ещё один способ, "пихать" данные в Excel из базы, о котором здесь возможно никто не знает или не хочет упоминать.
Хотя этот способ для тех, кто не боится использовать нестандартные компоненты.
А теперь подробнее остановимся на предлагаемым мной методе.
1. Устанавливаем библиотеку невизуальных компонентов FlexCel.
2. Кладем на форму, а можно в модуль данных два из них -
- XLSAdapter и FlexCelReport.
3. Свойства компонентов:
XLSAdapter.SaveFormat=[snXLS];
FlexCelReport.Adapter=XLSAdapter;
4. Кладем на форму кнопку "Сохранить".

procedure TMainForm.Button1Click(Sender: TObject);
var PathEx: string;
begin
if SaveDialog1.Execute then PathEx:=Savedialog1.FileName;
if FileExists(PathEx) then DeleteFile(PathEx);
if PathEx<>"" then
begin
DataModule1.FlexcelReport1.FileName:=PathEx;
DataModule1.FlexcelReport1.Run;
end;
end;


5. Создаем файл шаблона, например, template.xls следующего вида:

-----------------------------------------------------------------
Список работников цеха ППП

ФИО Адрес Должность Раб.телефон Дом.телефон
##Cust##FIO ##Cust##Addr ##Cust##Spec ##Cust##WTel ##Cust##HTel

-----------------------------------------------------------------

Где:
Cust - это имя компонента TTable;
FIO,Addr,Spec,WTel,HTel - имена полей вашей базы.

Теги вида ##Cust##FIO и т.д. заменяются данными из таблицы базы.

По нажатию на кнопку(См. выше) открывается диалог для сохранения содержимого вашей базы в файл Excel(*.xls). Имя файла для сохранения выбирайте отличное от имени файла шаблона. Причем сохранение происходит и в том случае, когда у вас на компьютер даже не установлен Excel, но файл можно скопировать на другой компьютер с предустановленным офисом и там его открыть без каких-нибудь проблем.
Пока.


Фикус   (2003-07-25 06:45:00) [11]

const
xlLCID=LOCALE_USER_DEFAULT;
...
ExcelApplication1.Workbooks.Add(n,xlLCID);
...


Rol   (2003-07-25 06:32:00) [12]

>Карелин Артем Напрямую - это CreateOLEObject? :)


edit_box   (2003-07-25 04:41:00) [13]

azdesign, Карелин Артем> если вас это не затруднит, подскажите чайнику, как напрямую использовать OLE.
Заранее благодарен.


Карелин Артем   (2003-07-22 14:45:00) [14]

Там постоянно меняется число параметров в методах. Я лично использую OLE напрямую и практически все нормально работает в 97-ХР Екселях.


azdesign   (2003-07-22 13:08:00) [15]

Отказался от использования OLE, потому что Мелкософт в каждой версии меняет правила, за ним не уследить, генерирую напрямую в файл.


edit_box   (2003-07-18 11:23:00) [16]

А засовываю так:

var n : OleVariant;
( n,0)

А засовываю так:

var n : OleVariant;
q:string;
begin
q:=Table1["name"]....;
n:="d:\jjj.xls";
ExcelApplication1.Workbooks.Add(n,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.ActiveWorkBook);
ExcelApplication1.Cells.Item[i,j].Value:=q;
ExcelWorkBook1.Save;
ExcelWorkBook1.Close;


stone   (2003-07-18 11:12:00) [17]

Смотря как ты засовываешь :))


Наверх

Титульная страница Поиск, карта сайта Написать письмо