Q&A

  • 데이터를 엑셀파일로 전송후 저장할때..
맨날 눈팅만 해서 죄송합니다.
엑셀파일로 데이터를 보내는 방법은 찾았는데요..(숫자를 보내도 엑셀에서 텍스트로 인식하는..)
아래소스를 실행해보면 윈도우에 엑셀창을 띄워 전송된 데이터를 보여주는 형식입니다.

제가 원하는 방식은 엑셀을 띄우지 않고
원하는 경로의 파일명으로 바로 저장을 하고 싶은데요..

어떻게 구현을 해야 하나요?(아래소스를 좀 수정해서..^^)

procedure TForm1.Button1Click(Sender: TObject);
var
  XL,WorkBook: Variant;
  i : integer;
  ArrV: OleVariant;
  Row,Col : Integer;
begin
  try
    XL:= CreateOleObject('Excel.Application');
  except
    Application.MessageBox('Excel이 설치되어 있지 않습니다. 먼저 Excel을 설치하세요.',
      '오류', MB_OK or MB_ICONERROR);
    Screen     .Cursor  := crDefault;
    Exit;
  end;

  Application.ProcessMessages;
  try
    WorkBook := XL.WorkBooks.Add;

    //Data import
    ArrV := VarArrayCreate([0, StringGrid1.RowCount, 0, StringGrid1.ColCount], varOleStr);
    for Row := 0 to StringGrid1.RowCount do
    begin
      for Col := 0 to StringGrid1.ColCount do
      begin
        Application.ProcessMessages;
        ArrV[Row, Col] := StrToInt(StringGrid1.cells[Col, Row]);
      end;
    end;
    XL.Range[XL.Cells[1, 1], XL.Cells[StringGrid1.RowCount, StringGrid1.ColCount]].Value := ArrV;

    XL.DisplayAlerts := False;
    XL.Visible:= True;
  finally
    Application.ProcessMessages;
  end;
end;
2  COMMENTS
  • Profile
    TeamB 2005.09.08 10:54


    False 로 설정하면 엑셀이 보이지 않습니다. 그 밑으로 저장하고 종료하는 부분을 넣으면 되겟죠?

    XL.WorkBook.SaveAs(파일명); //저장하고..(WorkBook인지 기억이 안나는군요. XL 아니면 ActiveWorkBook인거 같은데..아마도 될것같다는...)
    XL.Quit; //종료함..

    흠 기억나는대로 써보긴 했는데 정확하지 않습니다. 데탑에 예전에 만들어두었던게 있는데 지금 꺼져 있어서..^^;; 낼 확인해보고 틀렸으면 다시 수정할께요..

    그럼..
  • Profile
    아케인져 2005.09.08 19:38
    ㅠㅠ.. 답변 정말 감사합니다.(감사의 눈물..)
    제가 원하던 코드네요. WorkBook.SaveAs 가 맞는것 같습니다.

    XL.Visible:= True;
    WorkBook.SaveAs(파일명);
    XL.Quit; //종료함..