![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таблица Exel и БД: экспорт данных из ячеек exel в поля БД? [D6, Paradox]
В л а д и м и р © (2004-03-06 18:36:00)Уважаемые мастера, подскажите пожалуйста, каким образом можно не вводя вручную данные, содержащиеся в Exel, экспортировать их в соответствующие поля таблицы БД.
Таблица exel содержит отчет о доходах и расходах на определенную дату. Если для упрощения предположить, что данная таблица exel содержит в своих ячейках 3 записи (06.03.2004 -, дата; 1000 - доход от реализации продукта А; 500 - издержки от реализации продукта А), то как можно осуществить доступ к этим данным, прочитать их и записать в соответствующие поля БД?
Dr.Alex (2004-03-07 01:21:00) [1]type
TExcell = class(TForm)
Button1: TButton;
XLApp: TExcelApplication;
ExcelWorksheet: TExcelWorksheet;
ExcelWorkbook: TExcelWorkbook;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Excell: TExcell;
implementation
uses Unit4, Unit2, QRepor, Unit1, Unit3, Unit5;
{$R *.dfm}
procedure TExcell.Button1Click(Sender: TObject);
var
WorkBk : _WorkBook;
WorkSheet : _WorkSheet;
R, X, Y,a,b : Integer;
IIndex : OleVariant;
RangeMatrix : Variant;
NomFich : WideString;
s:string;
begin
dminternet.TPrice.Edit;
for b:=1 to dminternet.TPrice.RecordCount do dminternet.TPrice.Delete;
NomFich := 'G:\Work\MY DOckумент\Прайс\1.xls';
IIndex := 1;
XLApp.Connect;
// Открываем файл Excel
XLApp.WorkBooks.Open(NomFich,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
WorkBk := XLApp.WorkBooks.Item[IIndex];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Чтобы знать размер листа (WorkSheet), т.е. количество строк и количество
// столбцов, мы активируем его последнюю непустую ячейку
WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
// Получаем значение последней строки
X := XLApp.ActiveCell.Row;
// Получаем значение последней колонки
Y := XLApp.ActiveCell.Column;
// Определяем количество колонок в TStringGrid
//GenericStringGrid.ColCount := Y;
// Сопоставляем матрицу WorkSheet с нашей Delphi матрицей
RangeMatrix := XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value;
// Выходим из Excel и отсоединяемся от сервера
XLApp.Quit;
XLApp.Disconnect;
// Определяем цикл для заполнения
for R := 1 to X do begin
dminternet.TPrice.Append;\\ dminternet.TPrice- это моя база вставте путь к своей и все будет работать
dminternet.TPricePPos.Value:=R;
dminternet.TPricePLocator.Value:=Copy(RangeMatrix[R,1],2,Length(RangeMatrix[R,1]));
dminternet.TPricePName.Value:=Copy(RangeMatrix[R,2],2,Length(RangeMatrix[R,2]));// Ну и так далее
end;
end;
end.
Zacho (2004-03-06 20:05:00) [2]Еще вариант: прямо из Excell можно сохранить таблицу в dbf
YurikGl (2004-03-06 19:51:00) [3]Самый простой вариант:
Обращаешься по очереди к каждой строке документа и добавляешь ее в БД. Вопрос доступа к документу Excel и считывания информации из ячеек не раз обсуждался на форуме.
Второй вариант. Можно попробовать выделить записи в excel потом copy/paste в таблицу БД. Но, скорее всего, не прокатит.