<!--CodeS-->
var
XL, ExcelBook, ExcelSheet : Variant;
intCnt, i, j : integer;
begin
try
//엑셀을 실행
XL := CreateOLEObject('Excel.Application');
except
ShowMessage('Excel이 설치되어 있지 않습니다!!!');
Exit;
end;
Try
XL.Visible := False;
XL.DisplayAlerts := False;
if OpenDialog1.Execute then begin
MeResult.Clear;
MeResult.Lines.Add('파일을 읽어드립니다.');
lbFile.Caption := '파일 : ' + OpenDialog1.FileName;
lbCount.Caption := '자료건수 : ' + '0건';
ExcelBook := XL.WorkBooks.Open(OpenDialog1.FileName);
ExcelBook := XL.WorkBooks.item[1]; //워크 쉬트 설정
ExcelSheet := ExcelBook.Worksheets.Item[1];
SExGrid.RowCount := ExcelSheet.UsedRange.Rows.count;
SExGrid.ColCount := ExcelSheet.UsedRange.Columns.count;
ProgressBar1.max := ExcelSheet.UsedRange.Rows.count;
ProgressBar1.Position := 0;
For I := 1 to ExcelSheet.UsedRange.Rows.count do begin
if Trim(XL.cells[I,1].formula) = '' then begin
SExGrid.RowCount := j - 1;
lbCount.Caption := '자료건수 : ' + FormatFloat('###,##0건', j-2);
Break;
end;
For J := 1 to ExcelSheet.UsedRange.Columns.count do
SExGrid.Cells[J,I-1] := VarToStr(ExcelSheet.Cells[I,J]); //스트링그리드에 뿌리기
ProgressBar1.Position := I;
end;
MeResult.Lines.Add(IntToStr(ExcelSheet.UsedRange.Rows.count) + '건의 자료를 변환하였습니다');
XL.WorkBooks.Close;
XL.quit;
XL := unassigned;
if bCheckExcelFile = False then begin
MessageDlg('정상적인 엑셀 파일이 아닙니다.', mtInformation,[mbOK], 0);
ClearGrid;
end;
end;
Except
on err:exception do begin
XL.WorkBooks.Close;
XL.quit;
XL := unassigned;
ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
end;
end;
ProgressBar1.Position := 0;
end;
<!--CodeE-->
이게 올리는 폼인데 무슨 문제가 있는지 모르겠네요
스트링 그리드에 올리기만 하면 파라독스 .db파일을 못찾습니다.
이부분이 실행된후에 프로그램의 현재 디렉토리(용어선택이 이해가 가시는지..^^)가 변경이 되어서 그렇습니다.
그러니까..
프로그램 내부에서 listbox.items.loadfromfile('aaa.txt'); 라고 햇을때..
기본적으로 프로그램에서 프로그램이 현재 실행된 디렉토리 에서 aaa.txt를 찾게 됩니다.
하지만 if OpenDialog1.Execute then 가 실행된후에 기본 디렉토리가 바뀌면???
해당 디렉토리에서 aaa.txt를 찾으면서 없다고 에러가 나겠죠?
그래서..
path := ExtractFilePath(ParamStr(0)) + 'data\employee.db';
이런식으로 하면.. path는 현재 프로그램이 실행된 위치의 data란 하위폴더에서 해당 파일을 검색하므로
.db파일을 찾지못하는 것과 같은 오류는 발생하지 않을겁니다.
지금까지 오류원인에 대한 추측과 해결방안이었습니다..^^;
즐프~