Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Перенос данных из Excel в Table   Найти похожие ветки 

 
Buka   (2003-08-05 13:24) [0]

Уважаемые мастера! Доброго времени суток. Помогите примером (небольшим, если можно- исходником) как перенести данные из Excel в таблицу (заготовленную ранее при момощи DataBase DeskTop) типа Paradox.


 
kengura   (2003-08-05 13:41) [1]

Через OLE примерно так. Есть и другие варианты

//Запуск Excell
function StartExcel(IsVisible:boolean):variant;
begin
try
result:=UnAssigned;
result:=CreateOleObject("Excel.Application");
result.Visible:=IsVisible;
result.DisplayAlerts:=false;
except
raise Exception.Create("Не могу запустить Excel!");
end;
end;

//Открытие файла
procedure ExcelFileOpen(Excel:variant; FileName:string);
begin
try
Excel.WorkBooks.Open(FileName);
except
raise Exception.Create("Не могу открыть файл!");
end;
end;

//Закрываем Excell
procedure QuitExcel(var Excel:variant);
begin
try
Excel.Quit;
finally
( True) Через OLE примерно так. Есть и другие варианты

//Запуск Excell
function StartExcel(IsVisible:boolean):variant;
begin
try
result:=UnAssigned;
result:=CreateOleObject("Excel.Application");
result.Visible:=IsVisible;
result.DisplayAlerts:=false;
except
raise Exception.Create("Не могу запустить Excel!");
end;
end;

//Открытие файла
procedure ExcelFileOpen(Excel:variant; FileName:string);
begin
try
Excel.WorkBooks.Open(FileName);
except
raise Exception.Create("Не могу открыть файл!");
end;
end;

//Закрываем Excell
procedure QuitExcel(var Excel:variant);
begin
try
Excel.Quit;
finally
Excel:=Unassigned;
end;
end;

кусочек программы
var Excel, Sheet, CellVal:variant;
begin
Excel:=StartExcel(True);
ExcelFileOpen(Excel,"C:\Test.xls"); //открываем файл
Sheet:=Excel.ActiveWorkBook.Sheets[1];
CellVal := Sheet.Cells[1,1].value; // получаем значение ячейки А1 первого листа
ShowMessage(String(CellVal)); //смотрим его :)
QuitExcel(Excel); закрываем excell
end;


 
sniknik ©   (2003-08-05 14:16) [2]

подключаешся к Access(!!) базе, через ADO-Jet, и делаеш запрос вроде этого
SELECT * INTO Sheed1 IN "d:\" "Paradox 4.x;" FROM [Sheet1$] IN "D:\Кассовые события.xls" "Excel 8.0;"
и таблицу заготавливать не надо, (если надо то поменять запрос на INSERT INTO)


 
Buka   (2003-08-05 17:56) [3]

Благодарю. Буду пробовать.


 
Buka   (2003-08-06 20:45) [4]

Уважаемый Kengura!
Пробую отрабатывать то, что Вы предложили, но никак не могу разобраться в forward declarations. С чем их едят?
Объявил:
type

function StartExcel(IsVisible: boolean): variant;

а Delphi "плюется": "Unsatisfied forward or external declaration: "TForm. StartExcel "
равно, как и на три остальные
procedure QuitExcel(var Excel:variant);
procedure ExcelFileOpen (Excel: variant;Filename:string);
function CreateOleObject (const ClassName: string):IDispatch;

и далее
var

result: variant;
IsVisible: boolean;

procedure TForm.Click(Sender: TObject);
begin

( true) Уважаемый Kengura!
Пробую отрабатывать то, что Вы предложили, но никак не могу разобраться в forward declarations. С чем их едят?
Объявил:
type

function StartExcel(IsVisible: boolean): variant;

а Delphi "плюется": "Unsatisfied forward or external declaration: "TForm. StartExcel "
равно, как и на три остальные
procedure QuitExcel(var Excel:variant);
procedure ExcelFileOpen (Excel: variant;Filename:string);
function CreateOleObject (const ClassName: string):IDispatch;

и далее
var

result: variant;
IsVisible: boolean;

procedure TForm.Click(Sender: TObject);
begin

Excel:= StartExcel(true);

Чего ему надоть-то?


 
Nikolay M. ©   (2003-08-07 10:02) [5]


> а Delphi "плюется": "Unsatisfied forward or external declaration:
> "TForm. StartExcel "

Тут не ексель, тут бы синтаксис Паскаля сначала выучить... Книжку купи. А когда прочитаешь, определись, StartExcel у тебя является методом класса TForm или нет.


 
kati   (2003-08-07 10:24) [6]

Можешь и так сделать, сохрани файл как DBf в EXCELE, потом Открой Access - экспорт в paradox. Прошу без эмоций!


 
KDS ©   (2003-08-07 11:22) [7]

2 kati (07.08.03 10:24)
Правильно! 3 минуты и вопрос решен! Я почти так же и делаю.
И Нефик тут на 2 страницы исходники писать через ОЛЕ...
А можно и без сохранения ДБФ обойтись. Просто импортировать из Ёкселя прямо в акцесс. Ну а потом уже куда хочешь конвертируй


 
Nikolay M. ©   (2003-08-07 11:25) [8]


> Можешь и так сделать, сохрани файл как DBf в EXCELE, потом
> Открой Access - экспорт в paradox


Да и вообще большинство программистов скоро переквалифицируется в дворники. Зачем что-то делать, когда парни из MS/Borland/Oracle/etc. уже почти все сделали, главное - найти нужную кнопку :)


 
KDS ©   (2003-08-07 11:30) [9]

2 Nikolay M. ©

А зачем изобретать велик и тратить на это время, если можно пользоваться готовыми инструментами.
Ты же программы не на ассемблере пишешь, а на языках высокого уровня. Соответственно пользуешься готовым Делфи, готовым ВинАПИ, готовой СУБД и другими готовыми технологиями


 
Nikolay M. ©   (2003-08-07 11:35) [10]


> А зачем изобретать велик и тратить на это время, если можно
> пользоваться готовыми инструментами.
> Ты же программы не на ассемблере пишешь, а на языках высокого
> уровня.

Речь не об этом ;-))))


 
Buka   (2003-08-07 11:41) [11]

Nikolay M.
Насколько я понимаю правильно: разговаривать с "высоты" своего "ума" не самое большое достоинство Мастера? Хамить-с то мы тоже умеем. Да и не Вас я спрашивал.Остальных благодарю.



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

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
6-1536
jel
2003-06-25 10:27
2003.09.01
IPX и разные сети


14-1653
Скорбящий
2003-08-13 20:05
2003.09.01
сабж


1-1485
Tahion2
2003-08-18 12:34
2003.09.01
Как сделать универсальный DateTimeToStr?


9-1270
BBear
2003-03-01 20:49
2003.09.01
procedure TForum.Destoy;


1-1373
Question
2003-08-16 18:03
2003.09.01
Указателю на динамический массив значения после GetMem