jboard


엑셀다루기
성명 개발자
홈페이지
첨부파일

제가 파일을 open 해서 그런것 같아요
파일을 add해주면되네요 add해준다음에
if FileExists('C:\dims\보고서\'+sDate+'.xls') then
DeleteFile('C:\dims\보고서\'+sDate+'.xls');
이걸 넣어주면 깨끗하게 지워지네요..
제가 add함수와 open함수를 잘 이해하지 못했네요
add는 새로운 엑셀파일을 만드는거고.
open함수를 기존의 파일을 여는거라 열려있을때 아무리
지우려고 해도 지워지지 않는거네요..
다른 분도 이런 간단한 실수를 안했으면 합니다..그럼 수거..


초보 wrote:
> 쿼리를 해서 엑셀을 add해서 그냥 cells에다 뿌려주니깐
> 너무 느리더라구요.
> 그래서 fileStream을 사용해서 이용했는데 하나 안되는게 있어서
> 이렇게 질문을 합니다.
> TFileStream.Create하면 엑셀파일을 만들잖아요..
> 이걸 가지고 다시 보고서에 맞게 편집을 하게되었는데.
> 엑셀파일을 닫을때 저장 하지않고 나오면 그래도 fileStream으로 생성한
> 파일은 남아 있잖아요..
> 결국은 파일을 못지우게 되네요..
> 어떻게 하면 엑셀파일에 따라서 보고서 폴더에 있는 엑셀파일을 지우든지
> 저장하든지 할수 있을까요..
> 아무리 생각해도 나지 않네요..
>
>
>
> FStream := TFileStream.Create('C:\dims\보고서\'+sDate+'.xls', fmCreate);
> try
> XlsBeginStream(FStream, 0);
> with SelectQuery do begin
> Close;
> Sql.Clear;
> Sql.Add('select event_rdtype, event_inv_id, subst_name, event_type, event_level,');
> Sql.Add('event_port, code_name, event_state, event_occurdate,event_normal, event_stoptime');
> Sql.Add('from event_history eh, setup_zone_tbl szt, code_tbl ct ');
> Sql.Add('where eh.event_zonecd = szt.zone_cd and');
> Sql.Add('eh.event_setupzone = szt.subst_cd and eh.event_dest = ct.small_cd');
> Sql.Add('order by event_occursysdate desc');
> Open;
> first;
> itmp := 0;
> while not EOF do begin
>
> if FieldByName('event_level').AsString = '1' then
> XlsWriteCellLabel(FStream, 1,iTmp, 'CR');
> if FieldByName('event_level').AsString = '2' then
> XlsWriteCellLabel(FStream, 1,iTmp, 'MJ');
> if FieldByName('event_level').AsString = '3' then
> XlsWriteCellLabel(FStream, 1,iTmp, 'MN');
> if FieldByName('event_level').AsString = '4' then
> XlsWriteCellLabel(FStream, 1,iTmp, 'WR');
> if FieldByName('event_level').AsString = '5' then
> XlsWriteCellLabel(FStream, 1,iTmp, 'NM');
> Case FieldByName('event_rdType').AsInteger of
> 1: XlsWriteCellLabel(FStream, 0,iTmp, 'RTU');
> 2: XlsWriteCellLabel(FStream, 0,iTmp, 'DVR');
> 3: XlsWriteCellLabel(FStream, 0,iTmp, '정류기');
> 4: XlsWriteCellLabel(FStream, 0,iTmp, 'UPS');
> 5: XlsWriteCellLabel(FStream, 0,iTmp, '냉방기');
> end;
>
> XlsWriteCellLabel(FStream, 2,iTmp, FieldByName('Subst_Name').AsString);
> XlsWriteCellLabel(FStream, 3,iTmp, FieldByName('event_inv_id').AsString);
> XlsWriteCellLabel(FStream, 4,iTmp, FieldByName('cfChannel').AsString);
>
> XlsWriteCellLabel(FStream, 5,iTmp, FieldByName('code_name').AsString);
> XlsWriteCellLabel(FStream, 6,iTmp, FieldByName('event_state').AsString);
> XlsWriteCellLabel(FStream, 7,iTmp, FieldByName('event_Normal').AsString);
> XlsWriteCellLabel(FStream, 8,iTmp, FieldByName('EVENT_OCCURDATE').AsString);
> XlsWriteCellLabel(FStream, 9,iTmp, FieldByName('EVENT_STOPTIME').AsString);
>
> Inc(iTmp);
> Next;
> end;
> end;
> XlsEndStream(FStream);
> finally
> FStream.Free;
> end;
>
> XLApp := CreateOleObject('Excel.Application');
> //XLApp.WorkBooks.add;
>
> XLApp.WorkBooks.Open('C:\dims\보고서\'+sDate+'.xls');
> XLApp.range['a1:J'+intTostr(iTmp)].select;
> XLApp.Selection.cut;
> XLApp.Range['a6'].Select;
> XLApp.ActiveSheet.Paste;
> XLApp.range['a2:I3'].select;
> XLApp.Selection.Merge;
> XLApp.Range['A:J'].Font.Name := '굴림체';
> XLApp.Range['A2:J3'].Font.Bold := True;
> XLApp.Range['A:J'].Font.Size := 9;
> XLApp.Range['A2:J3'].Font.Size := 16;
> XLApp.Range['A:J'].VerticalAlignment := xlVAlignCenter;
> XLApp.Range['A:J'].HorizontalAlignment := xlVAlignCenter;
> //xl.Range['A2:K3'].Font.Underline := TRUE;
> XLApp.Cells[2,1] := '전체 장애 이력';
>
> XLApp.Cells[5,1] := '장비';
> XLApp.Cells[5,2] := '등급';
> XLApp.Cells[5,3] := '설치위치';
> XLApp.Cells[5,4] := '장비ID';
> XLApp.Cells[5,5] := 'PORT';
> XLApp.Cells[5,6] := '대상';
> XLApp.Cells[5,7] := '현재값';
> XLApp.Cells[5,8] := '기준값';
> XLApp.Cells[5,9] := '장애발생시간';
> XLApp.Cells[5,10] := '장애처리시간';
> //XLApp.range['a5:I5'].RowHeight:= 20;
> XLApp.Range['a5:J5'].interior.Color := RGB(192,192,192);
> XLApp.Range['a5:J5'].Borders.Item[xlBottom].LineStyle := xlSolid;
> XLApp.Range['a5:J5'].Borders.Item[xlLeft].LineStyle := xlSolid;
> XLApp.Range['a5:J5'].Borders.Item[xlRight].LineStyle := xlSolid;
> XLApp.Range['a5:J5'].Borders.Item[xlTop].LineStyle := xlSolid;
> XLApp.visible := TRUE;


2007-06-22 11:37:41 / 222.238.36.92
   

전체 121개 - 현재 3/9 쪽 관리자로그인~~
91 엑셀 개발자 2007-06-22 1359
엑셀다루기 개발자 2007-06-22 1494
89 문자보내기 개발자 2007-06-18 1208
88 [HEALTH - 소화에 얽힌 오해와 진실 ] 기자 2007-05-26 909
87 오라클문의처 개발자 2007-05-17 978
86 터보 델파이 판매처 개발자 2007-05-16 998
85 php 란 무엇인가 개발자 2007-04-20 1291
84 사업자옮길때 세무상담 2007-04-20 895
83 썬크림... 행인 2007-03-28 1003
82 대소문자 구별법 개발자 2007-03-22 1066
81 프로그램 설치시 주의사항 개발자 2007-03-17 934
80 Wake on-LAN 사용하기 알바했던 사 2007-02-18 1079
79 충격-택배회사 알바 경험담....쩝 알바했던 사 2007-02-16 1159
78 프락셀 행인 2007-02-13 1562
77 빨리 피부를 망가트리는 법 MS CENTER 2007-01-17 1048
[맨처음] .. [이전] [1] [2] 3 [4] [5] [6] [7] [다음] .. [마지막]