엑셀자료 불러오기를 하다가 제일 막혔던 부분이 바로 엑셀의 Record(Row)수를 구하는 거였습니다.
자료가 많은경우 ProgressBar를 이용하면 보기 좋겠죠.
이 자료는 대부분 참조한 거구요. Count수 구하는것은 아래처럼 하시면 될것 같습니다.
허접하니까 여기저기 살붙여서 사용하세요
procedure TActiveFormX.BitBtn1Click(Sender: TObject);
var
ExcelApp, ExcelBook, ExcelSheet : Variant;
I, J : 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;
StringGrid1.ColCount := ExcelSheet.UsedRange.Columns.count;
For I := 1 to ExcelSheet.UsedRange.Rows.count do
For J := 1 to ExcelSheet.UsedRange.Columns.count do
StringGrid1.Cells[J,I] := vartostr(ExcelSheet.Cells[I,J]); //스트링그리드에 뿌리기
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;