Q&A

  • Excel로 데이터를 가져왔는데 깨지네염 --;; 해결법 좀 알려주세염...
procedure THBI1004F.ExcelBtnClick(Sender: TObject);
var
vSheet, vColumn, vRow : Variant;
i, j: Integer;
begin
XL := CreateOLEObject('Excel.Application');                           //엑셀을 실행하도록 개체생성
XL.Workbooks.Add(XLWBATWorksheet);                                    //개체에서 새로운 엑셀 Sheet생성
XL.Workbooks[1].Worksheets[1].Name := '팀별 업무보고';                //엑셀 Sheet에 이름 할당
vSheet := XL.Workbooks[1].Worksheets['팀별 업무보고'];
vColumn := XL.Workbooks[1].Worksheets['팀별 업무보고'].Columns;
vRow := XL.Workbooks[1].Worksheets['팀별 업무보고'].Rows;

with Query1 do
begin
   //FieldCount는 말 그대로 Field값을 가져온다
   //쉽게 말해서 Field명을 받아온다(ex - YYYYMM, BUSEO, REPORT)
   for i := 0 to FieldCount - 1 do
     vSheet.Cells[1, i+1] := Fields[i].FieldName;

   Gauge1.Progress := 0;
   Gauge1.MaxValue := RecordCount;
   First;
   Screen.Cursor := crHourGlass;

     for j := 2 to FieldCount-1 do
     begin
       vSheet.Cells[j, 1] := YYMMEdit.Text;                           //TEST
       vSheet.Cells[j, 2] := Query3.FieldByName('SMALLNAME').AsString;    //TEST
       vSheet.Cells[j, 3] := Query1.FieldByName('REPORT').AsString;   //TEST

       Gauge1.Progress := Gauge1.Progress + 1;


   First;

   vRow.Rows[1].HorizontalAlignment := xlCenter;       //타이틀을 중앙정렬 시킨다.
   for i := 0 to FieldCount - 1 do
     //필드의 속성이 문자일때는 좌측정렬을 시킨다.
     if Fields[i].DataType = ftString then
       vColumn.Columns[i+1].NumberFormatLocal := '@';

   //각 셀의 크기를 자동으로 맞추어 준다.
   for i := 1 to FieldCount do
     vColumn.Columns[i].EntireColumn.AutoFit;

   Screen.Cursor := crDefault;
   ShowMessage('Excel 로 자료를 모두 보냈습니다.');
   XL.Visible := True;
end;
end;

소스까지 넣어두었습니다... 출력하면 YYYYMM, BUSEO에는 값이 정상적으로 들어가는데염...

REPORT에 들어가는 데이터들이 아래처럼 나오는군여 --;;

어떻게 하면 해결될런지여? 좀 알켜주세염....

오라클에서 Long형으로 입력되었던 데이터를 Excel로 떨군거거덩염...

{rtf1ansiansicpg949deff0deftab720{fonttbl{f0fswiss MS Sans Serif;}{f1fromanfcharset2 Symbol;}{f2fmodernfcharset129 'b1'bc'b8'b2'c3'bc;}{f3fmodernfcharset129 'b1'bc'b8'b2'c3'bc;}}

{colortblred0green0blue0;}

deflang1042horzdoc{*fchars  )]},.:'3b!?)]},.:'3b!?'a1'a1'a1'af'a1'b1'a1'b3'a1'b5'a1'b7'a1'b9'a1'bb'a1'bd'a1'a2'a3'a9'a3'dd'a3'fd'a3'ac'a3'ae'a3'ba'a3'bb'a3'bf'a3'a1'a1'c6'a1'c7'a1'c8'a1'c9'a1'cb'a3'a5}{*lchars ([{$'5c([{$'a1'ae'a1'b0'a1'b2'a1'b4'a1'b6'a1'b8'a1'ba'a1'bc'a3'a8'a3'db'a3'fb'a3'a4'a3'dc'a1'cc}pardplainf3fs18 'b1'e2'c8'b9'c6'c0 TEST

par }
1  COMMENTS
  • Profile
    ^ㅡ^ 2003.06.28 20:32
    //안녕하세요
    답변이 될련지 모르겠지만 db에는스트링으로 잡혀 있는것이 아니라고 했는데
    엑셀로 전송할때는 스트링으로 전송하네여
    vSheet.Cells[j, 2] := Query3.FieldByName('SMALLNAME').AsString;    //TEST
    여기에 보면 그렇게 되어 있네요
    제 생각에는
    vSheet.Cells[j, 2] := Query3.FieldByName('SMALLNAME').Text;    //TEST
    text라든가 value값으로 보내면 나올꺼 같은데요


    그리고 왜 2번쨰 for안에서 필드카운트가 도는지 모르겠네요
    레코드카운드도 아니고........
    도움이 되실지 모르겠네요
    허접초보였습니다.
    즐코딩하세요



    • 빵빵빵
    • 2003.06.28 02:04
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김주
      2003.06.28 13:29
      위에 다른 님도 글귀을 적어 주셨지만... 저같은 경우도 ADO을 사용해 프로그램을 만들었는데... 그런경...
    • nilriri™
      2003.06.28 03:24
      샬롬~ DBMS는 어떤거죠? 델파이, DB, ADO(MDAC)버젼은요? try    //code.... exc...
    • 빵빵빵
      2003.06.28 21:25
      DBMS는 MS-SQL2000입니다. 그리고 VPN망안에 있습니다. ADO도 버젼이 있나요? MDAC버젼이 아마 MS-SQL2000...
    • 이봉희
    • 2003.06.28 01:18
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 왕초보^^
    • 2003.06.27 22:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2003.06.28 20:32
      //안녕하세요 답변이 될련지 모르겠지만 db에는스트링으로 잡혀 있는것이 아니라고 했는데 엑셀로 전송할...
    • 방재웅
      2003.06.27 21:57
      해당 컴포넌트가 델파이에 등록되어 있지 않기 때문입니다. 해당 컴포넌트를 등록하세요.
    • 초짜는괴로워!
      2003.06.27 22:05
      해당 컴포넌트가 등록이 안대있어서 나는거라 하셨는데 해당 컴포넌드가 class TCommPortdriver인가여?...
    • 바보감자
      2003.06.28 00:32
      안녕하세요 언제나 초보 바보감자입니다. 콤포넌트 등록은 메뉴에 component -> install 콤포넌트 로...
    • 김성훈
    • 2003.06.27 21:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2003.07.08 07:53
      안녕하세요. 한원희입니다. 후킹같은 것은 모르겠구요, 타이머를 이용해서(1초 주기 또는 500ms 주기로...
    • 이정은
    • 2003.06.27 07:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 별볼일없는
      2003.06.27 21:26
      음냐 리포트에는 하나의 쿼리만 가능합니다. 그러니깐 SQL로 테이블을 조인하셔서 사원이름 : 사...
    • 구니
    • 2003.06.27 04:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 손상엽
    • 2003.06.27 03:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.06.28 03:04
      안녕하세요.. 그건 아마두 페이지 헤더나 페이지 푸터에 문제 같네요... Composite Report는 각각...
    • 손상엽
      2003.06.30 21:46
      이야.. 며칠동안 내내 고민했었는데... 답글 보고 이리저리 해보니 정말 되네요.. ^^ 순서가 중요한...
    • 남궁혁
    • 2003.06.27 03:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채태숙
      2006.05.31 00:31
      아래처럼 해보세요 저도 찾다가 해보니까 되더라구요.. <!--CodeS--> procedure TForm....
    • sky
    • 2003.06.27 02:44
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.06.27 02:59
      안녕하세요 언제나 초보 바보감자입니다. 더운날에 코딩하시느라 수고하십니다. 다른 응용프로그램에서 ...
    • sky
      2003.06.27 03:17
      우선 답변 주셔서 감사하구요. 다른 응용프로그램에서 나는걸 체크하는게 아니구요. 내 프로그램에서 나...
    • 황돈기
      2003.06.27 23:44
      TCP socket을 쓰신다면...error event에서 error code 값에 대한 exception처리를 하구 errorcode 값을 0으...
    • 박준영
    • 2003.06.27 02:43
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이창영
      2003.06.27 21:33
      엑세스에서는 substring 대신 mid를 씁니다. 물론 left 도 가능하지만 substring 과 똑같은 기능이라면 m...
    • 김학진
      2003.06.27 02:58
      sql monitor 사용하세요. 모니터링 해보면 sql문장 전송되는 것이 보이는데, 그걸 긁어서 쿼리분석기나 ...
    • sky
      2003.06.27 02:56
      substring 대신 Left 를 쓰시면.. Left(JH.Hyundate, 6)
    • 최은하
    • 2003.06.27 02:38
    • 3 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.06.27 03:07
      샬롬~ 어라 이상하다..ㅡㅡ; SQL에 쿼리문장만 ADD한다고 해서 데이터 셋이 자동으로 리프레쉬 되...
    • 최은하
      2003.06.27 03:27
    • 최은석
      2003.06.27 03:53
      말 그대로... insert or edit 모드가 아닌상태에서...입력, 수정 작업을 시도할때 생기져... 작업전에.. ...
    • ^ㅡ^
      2003.06.27 05:44
      // 소스 문제가 아니라 리포트프라퍼티에 보면 프린트셋팅안에 copies에 2로 설정되어 있는거 같은데요 ...
    • 하병준
    • 2003.06.27 01:32
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 오은경
    • 2003.06.27 01:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 2003.06.30 12:05
      먼저 답해주었던분의 상세설명을 덧붙입니다. text화일을 excel변환시에 컬럼이 나누어져야한다는게 ...
    • 김학진
      2003.06.27 02:33
      윈2000이라면 csv형태로 그냥 가져와도 되지만, 쉬운 방법으로 설명하겠습니다. 1. 엑셀로 읽어온다. (...
    • 정동문
    • 2003.06.27 01:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • yuricity
    • 2003.06.27 01:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이창영
      2003.06.27 23:01
      찾아보셨는지는 의문이네요... 아마도 예전 질답게시판에 많을겁니다... procedure TForm1.StringGrid1...
    • yuricity
      2003.06.28 00:21
      답변 감사드립니다... 님 말씀대로 제가 잘 찾아봤어야 하는 건데... ㅡ.ㅡ; 좋은하루 되시고요, 정말 ...
    • 이덕우
    • 2003.06.27 00:10
    • 0 COMMENTS
    • /
    • 0 LIKES