스트링그리드의 자료를 엑셀파일로 만들기 위해서..
아래와 같은 소스를 이곳에서 얻었습니다.
전 깔끔하게 엑셀파일이 딱 만들어지기를 원했지만..
이 소스는
엑셀이 열리는것이 보이고 또한 셀에 데이터가 박혀 들어가는것이
보이더군요..
음.. 제가 원하는 방식.. 그러니깐..
깔끔하게 파일만 덜렁 만들어 주려면 어떻게 하지요?
그러니깐.. 편법이라도..
========================== 아 래 =================================
procedure StringGridToExcel_GRD(var vSGGrid: TStringGrid; Title: string);
var
XL, XLBook: Variant;
i, j, k: Longint;
si, sj: integer;
begin
with vSGGrid do begin
try
XL := GetActiveOLEObject('Excel.Application');
except
on E: EOleSysError do begin
try
XL := CreateOLEObject('Excel.Application'); //엑셀을 실행
except
MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);
Exit;
end;
end;
end;
try
XLBook := XL.WorkBooks.Add; //새로운 페이지 생성
XLBook.WorkSheets[1].Name := Title;
XL.Visible := True;
i := 1; si := 0;
k := 1; sj := 0;
for si := 0 to colCount - 1 do begin
if si = 0 then
XLBook.WorkSheets[Title].Range['A1'].Value := Cells[si,0]
else if si = 1 then
XLBook.WorkSheets[Title].Range['B1'].Value := Cells[si,0]
else if si = 2 then
XLBook.WorkSheets[Title].Range['C1'].Value := Cells[si,0]
else
XLBook.WorkSheets[Title].Range['D1'].Value := Cells[si,0];
end;
for si := 0 to colCount - 1 do begin
for sj := 1 to RowCount - 1 do begin
if si = 0 then
XLBook.WorkSheets[Title].Range['A'+IntToStr(sj+1)].Value := Cells[si,sj]
else if si = 1 then
XLBook.WorkSheets[Title].Range['B'+IntToStr(sj+1)].Value := Cells[si,sj]
else if si = 2 then
XLBook.WorkSheets[Title].Range['C'+IntToStr(sj+1)].Value := Cells[si,sj]
else
XLBook.WorkSheets[Title].Range['D'+IntToStr(sj+1)].Value := Cells[si,sj];
end;
end;
XLBook.WorkSheets[Title].Range['A1', 'A1'].Select;
XL.Selection.Columns.AutoFit;
finally
XLBook := UnAssigned;
XL := UnAssigned;
end;
end;
end;