1메가 자리 엑셀자료를 델파이에서 스트링그리드로 불러오려고 하는데
안되는 군요 다른 방법이 있는지
팁 하고 자료실에 있는거는 해봤는데 잘 안되서 그러는데
procedure TFEXCELDB.BitBtn1Click(Sender: TObject);
var
ExcelApp, ExcelBook, ExcelSheet : Variant;
I, J, s : Integer; // 순환변수
begin
//엑셀이 설치되었있을 경우만 가능
try
//엑셀을 실행
ExcelApp := CreateOLEObject('Excel.Application');
except
ShowMessage('Excel이 설치되어 있지 않습니다!!!');
Exit;
end;
Try
ExcelApp.Visible := False;
ExcelApp.DisplayAlerts := False;
//엑셀 통합문서 열기
if OpenDialog1.Execute then
begin
ExcelBook := ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
ExcelBook := ExcelApp.WorkBooks.item[1]; //워크 쉬트 설정
//일단 개별문서는 sheet1으로 고정
ExcelSheet := ExcelBook.Worksheets.Item[1];
//StringGrid 초기화 (Title은 고려하지 않았습니다.)
StringGrid1.RowCount := ExcelSheet.UsedRange.Rows.count+1;
StringGrid1.ColCount := ExcelSheet.UsedRange.Columns.count+1;
s := 0;
For I := 1 to 20 do
begin
s:= i-2;
For J := 0 to ExcelSheet.UsedRange.Columns.count do
begin
if j = 0 then
begin
if s > 0 then
StringGrid1.Cells[J,I] := intTostr(i); //스트링그리드에 뿌리기
end
else
StringGrid1.Cells[J,I] := vartostr(ExcelSheet.Cells[I,J]); //스트링그리드에 뿌리기
end;
end;
ExcelApp.WorkBooks.Close;
ExcelApp.quit;
ExcelApp := unassigned;
end;
Except
on err:exception do
begin
ExcelApp.WorkBooks.Close;
ExcelApp.quit;
ExcelApp := unassigned;
ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
end;
end;
ShowMessage(IntToStr(ExcelSheet.UsedRange.Rows.count) + '건의 자료를 변환하였습니다');
end;
버튼 클릭시 위의 엑셀자료 불러오는건데요 너무 오래걸려서 그러는데 여기서
고칠것이 있는지 알려주세요
엑셀 화일을 텍스트 탭으로 저장하고
텍스트 화일로 저장된 데이타를
BCP 명령으로 데이타를 올리면 됩니다.
참고 하세요.