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];
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;
1.음.. 소스의 젤 윗줄 use 절에 comobj 를 추가. (엑셀 함수 및 컴퍼넌트 사용하겠다는 의미)
2. 위 부분은 엑셀파일을 stringgrid 에 옮기는 소스인데 StringGrid1 를 화면보여주구 저장하실거면 그대로 쓰시던가 또는
관련 그리드(dbgrid??)로 바꾸시면 될거구요
3. 저장하실때는 오라클이면 거의 odac 사용하실테니 OraQuery 나 OraDataset 사용하시면 될겁니다.
참고로 엑셀이 설치되어 있어야 합니다.
또한 서버단에서 지정된 시간이나 등등 돌아가게 할때는 보통 f1book이나 ado를 사용합니다.
엑셀을 설치하지 않게 위해서이죠.
단지 f1book같은경우엔 엑셀버젼의 문제가 있어 호환이 다 되지 않습니다.
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;
1.음.. 소스의 젤 윗줄 use 절에 comobj 를 추가. (엑셀 함수 및 컴퍼넌트 사용하겠다는 의미)
2. 위 부분은 엑셀파일을 stringgrid 에 옮기는 소스인데 StringGrid1 를 화면보여주구 저장하실거면 그대로 쓰시던가 또는
관련 그리드(dbgrid??)로 바꾸시면 될거구요
3. 저장하실때는 오라클이면 거의 odac 사용하실테니 OraQuery 나 OraDataset 사용하시면 될겁니다.
참고로 엑셀이 설치되어 있어야 합니다.
또한 서버단에서 지정된 시간이나 등등 돌아가게 할때는 보통 f1book이나 ado를 사용합니다.
엑셀을 설치하지 않게 위해서이죠.
단지 f1book같은경우엔 엑셀버젼의 문제가 있어 호환이 다 되지 않습니다.