Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
DB=>Excel저장시 엑셀의 Cell의 Width변경 가능한지...
DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여
저장할려고 합니다.
가능한지요?
3
COMMENTS
박장용
•
2001.08.08 04:57
cjw wrote:
> DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여
> 저장할려고 합니다.
> 가능한지요?
> 가능합니다.. autofit을 사용하시면요..
XL.Selection.Columns.AutoFit;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
샘플을 올립니다.. 적당히 수정하셔서 사용하세요..
function TFormDbri6301.fExcelSimpleConvThree(sSheetName:string;
iCurrency :string):boolean;
var XL : Variant;
ir, j : Integer;
iCount : integer;
sSumformula : string;
begin
result := True;
//엑셀
try
XL := CreateOLEObject('Excel.Application');
except
Application.MessageBox('Excel이 설치되어 있지 않습니다.',
'정보', MB_ICONINFORMATION);
result := False;
Exit;
end;
with txsBT_DBRI6300 do begin
DisableControls;
try
XL.WorkBooks.Add; //페이지 생성
XL.ActiveSheet.Name := sSheetName; //쉬트명 지정
ir := 1; //현재 엑셀의 Row수
//검색조건 출력
XL.Cells[ ir, 1].Value := '청구년월 : ' + mpickerSalesDate3.GetFormatText;
inc(ir);
XL.Cells[ ir, 1].Value := '통화구분 : ' + cboxCurrency3.Text;
inc(ir);
if rbtn31.Checked then XL.Cells[ir,1] := '구 분 : 청구분'
else XL.Cells[ir,1] := '구 분 : 확정분';
inc(ir);
//첫번째 서비스를 연다.
if not fServiceCall(3) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//첫번째 표 헤더 작성
XL.Cells[ir, 1].Value := '조정구분';
XL.Cells[ir, 2].Value := '매출환급구분';
XL.Cells[ir, 3].Value := '공급가액';
XL.Cells[ir, 4].Value := '부가세';
XL.Cells[ir, 5].Value := '합계';
XL.Cells[ir, 6].Value := '자동할인';
XL.Cells[ir, 7].Value := '연체료';
XL.Cells[ir, 8].Value := 'myBill할인';
XL.Cells[ir, 9].Value := '총합계';
inc(ir);
iCount := 0;
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //조정구분
XL.Cells[ir, 2].Value := '매출'; //Fieldbyname('STR22').asstring; //매출환급구분
//현재는 매출밖에 없슴.. 추후 추가
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //합계
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //자동할인
XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //연체료
XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //Mybill할인
XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //총합계
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //합계
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //자동할인
XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //연체료
XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //Mybill할인
XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //총합계
end;
next;
inc(ir);
inc(iCount);
end; // end of while
//~~~~합계 처리
XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
XL.Range[ XL.Cells[ir,3], XL.Cells[ir,9]].FormulaR1C1 := sSumformula;
inc(ir);
inc(ir);
//두번째 서비스를 연다.
if not fServiceCall(31) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 6] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//두번째 표 헤더 작성
XL.Cells[ir, 1].Value := '구분';
XL.Cells[ir, 2].Value := '건수';
XL.Cells[ir, 3].Value := '공급가액';
XL.Cells[ir, 4].Value := '부가세포함';
XL.Cells[ir, 5].Value := '원단위절사';
XL.Cells[ir, 6].Value := '선납대체';
inc(ir);
iCount := 0;
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //구분
XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //건수
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세포함
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //원단위절사
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //선납대체
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세포함
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //원단위절사
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //선납대체
end;
next;
inc(ir);
inc(iCount);
end; // end of while
//~~~~합계 처리
XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
XL.Range[ XL.Cells[ir,2], XL.Cells[ir,6]].FormulaR1C1 := sSumformula;
inc(ir);
inc(ir);
//세번째 서비스를 연다.
if not fServiceCall(32) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//세번째 표 헤더 작성
XL.Cells[ir, 1].Value := '청구종류';
XL.Cells[ir, 2].Value := '납입자수';
XL.Cells[ir, 3].Value := '매출액';
XL.Cells[ir, 4].Value := '부가세';
XL.Cells[ir, 5].Value := '청구금액';
XL.Cells[ir, 6].Value := '환급금액';
XL.Cells[ir, 7].Value := '절사액';
XL.Cells[ir, 8].Value := '선납대체';
XL.Cells[ir, 9].Value := '청구서금액';
inc(ir);
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //청구종류
XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //납입자수
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //매출액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //청구금액
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //환급금액
XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //절사액
XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //선납대체
XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //청구서금액
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //매출액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //청구금액
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //환급금액
XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //절사액
XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //선납대체
XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //청구서금액
end;
next;
inc(ir);
end; // end of while
//엑셀 서식지정
for j:=0 to 0 do begin
XL.Columns[j+1].Select;
XL.Selection.NumberFormatLocal := '@';
end;
for j:=1 to 8 do begin
XL.Columns[j+1].Select;
if iCurrency = '달러' then
XL.Selection.NumberFormatLocal := '#,##0.00_ ;[빨강]-#,##0.00 '
else XL.Selection.NumberFormatLocal := '#,##0_ ;[빨강]-#,##0 ';
end;
//셀 크기 조정
XL.Range[ XL.Cells[1, 1], XL.Cells[ir, 9]].Select;
XL.Selection.Columns.AutoFit;
//마무리
EnableControls;
XL.ActiveSheet.Range['A1'].Select;
XL.Visible := True;
XL := unassigned;
except
Application.MessageBox('Excel처리중 오류가 발생 했습니다. ',
'오류', MB_ICONERROR);
result := False;
XL := unassigned;
exit;
end; // end of try
end; // end of with
end;
0
0
삭제
수정
댓글
cjw
•
2001.08.13 19:31
박장용 wrote:
> cjw wrote:
> > DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여
> > 저장할려고 합니다.
> > 가능한지요?
> > 가능합니다.. autofit을 사용하시면요..
> XL.Selection.Columns.AutoFit;
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 샘플을 올립니다.. 적당히 수정하셔서 사용하세요..
>
> function TFormDbri6301.fExcelSimpleConvThree(sSheetName:string;
> iCurrency :string):boolean;
> var XL : Variant;
> ir, j : Integer;
> iCount : integer;
> sSumformula : string;
> begin
> result := True;
>
> //엑셀
> try
> XL := CreateOLEObject('Excel.Application');
> except
> Application.MessageBox('Excel이 설치되어 있지 않습니다.',
> '정보', MB_ICONINFORMATION);
> result := False;
> Exit;
> end;
>
> with txsBT_DBRI6300 do begin
> DisableControls;
>
> try
> XL.WorkBooks.Add; //페이지 생성
> XL.ActiveSheet.Name := sSheetName; //쉬트명 지정
> ir := 1; //현재 엑셀의 Row수
>
> //검색조건 출력
> XL.Cells[ ir, 1].Value := '청구년월 : ' + mpickerSalesDate3.GetFormatText;
> inc(ir);
> XL.Cells[ ir, 1].Value := '통화구분 : ' + cboxCurrency3.Text;
> inc(ir);
> if rbtn31.Checked then XL.Cells[ir,1] := '구 분 : 청구분'
> else XL.Cells[ir,1] := '구 분 : 확정분';
> inc(ir);
>
> //첫번째 서비스를 연다.
> if not fServiceCall(3) then begin
> result := False;
> XL := unassigned;
> exit;
> end;
> //Header color
> XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
> XL.Selection.Interior.ColorIndex := xlColorGray;
> XL.Selection.Interior.Pattern := xlSolid;
> //첫번째 표 헤더 작성
> XL.Cells[ir, 1].Value := '조정구분';
> XL.Cells[ir, 2].Value := '매출환급구분';
> XL.Cells[ir, 3].Value := '공급가액';
> XL.Cells[ir, 4].Value := '부가세';
> XL.Cells[ir, 5].Value := '합계';
> XL.Cells[ir, 6].Value := '자동할인';
> XL.Cells[ir, 7].Value := '연체료';
> XL.Cells[ir, 8].Value := 'myBill할인';
> XL.Cells[ir, 9].Value := '총합계';
>
> inc(ir);
>
> iCount := 0;
> First;
> while not EOF do begin
> XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //조정구분
> XL.Cells[ir, 2].Value := '매출'; //Fieldbyname('STR22').asstring; //매출환급구분
> //현재는 매출밖에 없슴.. 추후 추가
> if iCurrency = '달러' then begin
> XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
> XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
> XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //합계
> XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //자동할인
> XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //연체료
> XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //Mybill할인
> XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //총합계
> end
> else begin
> XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
> XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
> XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //합계
> XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //자동할인
> XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //연체료
> XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //Mybill할인
> XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //총합계
> end;
> next;
> inc(ir);
> inc(iCount);
> end; // end of while
>
> //~~~~합계 처리
> XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
>
> sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
> XL.Range[ XL.Cells[ir,3], XL.Cells[ir,9]].FormulaR1C1 := sSumformula;
>
> inc(ir);
> inc(ir);
>
> //두번째 서비스를 연다.
> if not fServiceCall(31) then begin
> result := False;
> XL := unassigned;
> exit;
> end;
>
> //Header color
> XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 6] ].Select;
> XL.Selection.Interior.ColorIndex := xlColorGray;
> XL.Selection.Interior.Pattern := xlSolid;
> //두번째 표 헤더 작성
> XL.Cells[ir, 1].Value := '구분';
> XL.Cells[ir, 2].Value := '건수';
> XL.Cells[ir, 3].Value := '공급가액';
> XL.Cells[ir, 4].Value := '부가세포함';
> XL.Cells[ir, 5].Value := '원단위절사';
> XL.Cells[ir, 6].Value := '선납대체';
>
> inc(ir);
> iCount := 0;
> First;
> while not EOF do begin
> XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //구분
> XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //건수
> if iCurrency = '달러' then begin
> XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
> XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세포함
> XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //원단위절사
> XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //선납대체
> end
> else begin
> XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
> XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세포함
> XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //원단위절사
> XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //선납대체
> end;
> next;
> inc(ir);
> inc(iCount);
> end; // end of while
>
> //~~~~합계 처리
> XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
>
> sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
> XL.Range[ XL.Cells[ir,2], XL.Cells[ir,6]].FormulaR1C1 := sSumformula;
>
> inc(ir);
> inc(ir);
>
> //세번째 서비스를 연다.
> if not fServiceCall(32) then begin
> result := False;
> XL := unassigned;
> exit;
> end;
>
> //Header color
> XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
> XL.Selection.Interior.ColorIndex := xlColorGray;
> XL.Selection.Interior.Pattern := xlSolid;
> //세번째 표 헤더 작성
> XL.Cells[ir, 1].Value := '청구종류';
> XL.Cells[ir, 2].Value := '납입자수';
> XL.Cells[ir, 3].Value := '매출액';
> XL.Cells[ir, 4].Value := '부가세';
> XL.Cells[ir, 5].Value := '청구금액';
> XL.Cells[ir, 6].Value := '환급금액';
> XL.Cells[ir, 7].Value := '절사액';
> XL.Cells[ir, 8].Value := '선납대체';
> XL.Cells[ir, 9].Value := '청구서금액';
>
> inc(ir);
> First;
> while not EOF do begin
> XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //청구종류
> XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //납입자수
> if iCurrency = '달러' then begin
> XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //매출액
> XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
> XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //청구금액
> XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //환급금액
> XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //절사액
> XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //선납대체
> XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //청구서금액
> end
> else begin
> XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //매출액
> XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
> XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //청구금액
> XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //환급금액
> XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //절사액
> XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //선납대체
> XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //청구서금액
> end;
> next;
> inc(ir);
> end; // end of while
>
> //엑셀 서식지정
> for j:=0 to 0 do begin
> XL.Columns[j+1].Select;
> XL.Selection.NumberFormatLocal := '@';
> end;
> for j:=1 to 8 do begin
> XL.Columns[j+1].Select;
> if iCurrency = '달러' then
> XL.Selection.NumberFormatLocal := '#,##0.00_ ;[빨강]-#,##0.00 '
> else XL.Selection.NumberFormatLocal := '#,##0_ ;[빨강]-#,##0 ';
> end;
>
> //셀 크기 조정
> XL.Range[ XL.Cells[1, 1], XL.Cells[ir, 9]].Select;
> XL.Selection.Columns.AutoFit;
>
> //마무리
> EnableControls;
> XL.ActiveSheet.Range['A1'].Select;
> XL.Visible := True;
>
> XL := unassigned;
>
> except
> Application.MessageBox('Excel처리중 오류가 발생 했습니다. ',
> '오류', MB_ICONERROR);
> result := False;
> XL := unassigned;
> exit;
> end; // end of try
> end; // end of with
> end;
>
장용님 답변 정말 감사합니다.
답변 주신대로 'AutoFit'을 사용하니 셀폭이 자동적으로 조절됩니다.
그런데요. 엑셀상에서는 제대로 표시가 됩니다만, 인쇄할려고 미리보기를 하면
문자열이 제대로 표시가 안되고 '#######'표시되는 셀들이 있어 다시 조정을 해야
됩니다. 죄송합니다만 다음 2가지만 더 질문 드립니다.
1. 각 열의 폭을 각각 지정할수는 없는지요?
XL.Cells[ir, 1].Width := 50;
XL.Cells[ir, 2].Width := 100;
XL.Cells[ir, 3].Width := 150; 식으로요.
2. 헤더부에 정렬을 하고 싶은데 어떻게 하면 되는지요?
이상 답변 부탁드립니다.
그럼, 수고하세요.
0
0
삭제
수정
댓글
Superdev
•
2001.11.02 01:42
cjw wrote:
> 박장용 wrote:
> > cjw wrote:
> > > DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여
> > > 저장할려고 합니다.
> > > 가능한지요?
> > > 가능합니다.. autofit을 사용하시면요..
> > XL.Selection.Columns.AutoFit;
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 샘플을 올립니다.. 적당히 수정하셔서 사용하세요..
> >
> > function TFormDbri6301.fExcelSimpleConvThree(sSheetName:string;
> > iCurrency :string):boolean;
> > var XL : Variant;
> > ir, j : Integer;
> > iCount : integer;
> > sSumformula : string;
> > begin
> > result := True;
> >
> > //엑셀
> > try
> > XL := CreateOLEObject('Excel.Application');
> > except
> > Application.MessageBox('Excel이 설치되어 있지 않습니다.',
> > '정보', MB_ICONINFORMATION);
> > result := False;
> > Exit;
> > end;
> >
> > with txsBT_DBRI6300 do begin
> > DisableControls;
> >
> > try
> > XL.WorkBooks.Add; //페이지 생성
> > XL.ActiveSheet.Name := sSheetName; //쉬트명 지정
> > ir := 1; //현재 엑셀의 Row수
> >
> > //검색조건 출력
> > XL.Cells[ ir, 1].Value := '청구년월 : ' + mpickerSalesDate3.GetFormatText;
> > inc(ir);
> > XL.Cells[ ir, 1].Value := '통화구분 : ' + cboxCurrency3.Text;
> > inc(ir);
> > if rbtn31.Checked then XL.Cells[ir,1] := '구 분 : 청구분'
> > else XL.Cells[ir,1] := '구 분 : 확정분';
> > inc(ir);
> >
> > //첫번째 서비스를 연다.
> > if not fServiceCall(3) then begin
> > result := False;
> > XL := unassigned;
> > exit;
> > end;
> > //Header color
> > XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
> > XL.Selection.Interior.ColorIndex := xlColorGray;
> > XL.Selection.Interior.Pattern := xlSolid;
> > //첫번째 표 헤더 작성
> > XL.Cells[ir, 1].Value := '조정구분';
> > XL.Cells[ir, 2].Value := '매출환급구분';
> > XL.Cells[ir, 3].Value := '공급가액';
> > XL.Cells[ir, 4].Value := '부가세';
> > XL.Cells[ir, 5].Value := '합계';
> > XL.Cells[ir, 6].Value := '자동할인';
> > XL.Cells[ir, 7].Value := '연체료';
> > XL.Cells[ir, 8].Value := 'myBill할인';
> > XL.Cells[ir, 9].Value := '총합계';
> >
> > inc(ir);
> >
> > iCount := 0;
> > First;
> > while not EOF do begin
> > XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //조정구분
> > XL.Cells[ir, 2].Value := '매출'; //Fieldbyname('STR22').asstring; //매출환급구분
> > //현재는 매출밖에 없슴.. 추후 추가
> > if iCurrency = '달러' then begin
> > XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
> > XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
> > XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //합계
> > XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //자동할인
> > XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //연체료
> > XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //Mybill할인
> > XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //총합계
> > end
> > else begin
> > XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
> > XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
> > XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //합계
> > XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //자동할인
> > XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //연체료
> > XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //Mybill할인
> > XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //총합계
> > end;
> > next;
> > inc(ir);
> > inc(iCount);
> > end; // end of while
> >
> > //~~~~합계 처리
> > XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
> >
> > sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
> > XL.Range[ XL.Cells[ir,3], XL.Cells[ir,9]].FormulaR1C1 := sSumformula;
> >
> > inc(ir);
> > inc(ir);
> >
> > //두번째 서비스를 연다.
> > if not fServiceCall(31) then begin
> > result := False;
> > XL := unassigned;
> > exit;
> > end;
> >
> > //Header color
> > XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 6] ].Select;
> > XL.Selection.Interior.ColorIndex := xlColorGray;
> > XL.Selection.Interior.Pattern := xlSolid;
> > //두번째 표 헤더 작성
> > XL.Cells[ir, 1].Value := '구분';
> > XL.Cells[ir, 2].Value := '건수';
> > XL.Cells[ir, 3].Value := '공급가액';
> > XL.Cells[ir, 4].Value := '부가세포함';
> > XL.Cells[ir, 5].Value := '원단위절사';
> > XL.Cells[ir, 6].Value := '선납대체';
> >
> > inc(ir);
> > iCount := 0;
> > First;
> > while not EOF do begin
> > XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //구분
> > XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //건수
> > if iCurrency = '달러' then begin
> > XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
> > XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세포함
> > XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //원단위절사
> > XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //선납대체
> > end
> > else begin
> > XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
> > XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세포함
> > XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //원단위절사
> > XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //선납대체
> > end;
> > next;
> > inc(ir);
> > inc(iCount);
> > end; // end of while
> >
> > //~~~~합계 처리
> > XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
> >
> > sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
> > XL.Range[ XL.Cells[ir,2], XL.Cells[ir,6]].FormulaR1C1 := sSumformula;
> >
> > inc(ir);
> > inc(ir);
> >
> > //세번째 서비스를 연다.
> > if not fServiceCall(32) then begin
> > result := False;
> > XL := unassigned;
> > exit;
> > end;
> >
> > //Header color
> > XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
> > XL.Selection.Interior.ColorIndex := xlColorGray;
> > XL.Selection.Interior.Pattern := xlSolid;
> > //세번째 표 헤더 작성
> > XL.Cells[ir, 1].Value := '청구종류';
> > XL.Cells[ir, 2].Value := '납입자수';
> > XL.Cells[ir, 3].Value := '매출액';
> > XL.Cells[ir, 4].Value := '부가세';
> > XL.Cells[ir, 5].Value := '청구금액';
> > XL.Cells[ir, 6].Value := '환급금액';
> > XL.Cells[ir, 7].Value := '절사액';
> > XL.Cells[ir, 8].Value := '선납대체';
> > XL.Cells[ir, 9].Value := '청구서금액';
> >
> > inc(ir);
> > First;
> > while not EOF do begin
> > XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //청구종류
> > XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //납입자수
> > if iCurrency = '달러' then begin
> > XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //매출액
> > XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
> > XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //청구금액
> > XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //환급금액
> > XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //절사액
> > XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //선납대체
> > XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //청구서금액
> > end
> > else begin
> > XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //매출액
> > XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
> > XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //청구금액
> > XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //환급금액
> > XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //절사액
> > XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //선납대체
> > XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //청구서금액
> > end;
> > next;
> > inc(ir);
> > end; // end of while
> >
> > //엑셀 서식지정
> > for j:=0 to 0 do begin
> > XL.Columns[j+1].Select;
> > XL.Selection.NumberFormatLocal := '@';
> > end;
> > for j:=1 to 8 do begin
> > XL.Columns[j+1].Select;
> > if iCurrency = '달러' then
> > XL.Selection.NumberFormatLocal := '#,##0.00_ ;[빨강]-#,##0.00 '
> > else XL.Selection.NumberFormatLocal := '#,##0_ ;[빨강]-#,##0 ';
> > end;
> >
> > //셀 크기 조정
> > XL.Range[ XL.Cells[1, 1], XL.Cells[ir, 9]].Select;
> > XL.Selection.Columns.AutoFit;
> >
> > //마무리
> > EnableControls;
> > XL.ActiveSheet.Range['A1'].Select;
> > XL.Visible := True;
> >
> > XL := unassigned;
> >
> > except
> > Application.MessageBox('Excel처리중 오류가 발생 했습니다. ',
> > '오류', MB_ICONERROR);
> > result := False;
> > XL := unassigned;
> > exit;
> > end; // end of try
> > end; // end of with
> > end;
> >
>
> 장용님 답변 정말 감사합니다.
> 답변 주신대로 'AutoFit'을 사용하니 셀폭이 자동적으로 조절됩니다.
> 그런데요. 엑셀상에서는 제대로 표시가 됩니다만, 인쇄할려고 미리보기를 하면
> 문자열이 제대로 표시가 안되고 '#######'표시되는 셀들이 있어 다시 조정을 해야
> 됩니다. 죄송합니다만 다음 2가지만 더 질문 드립니다.
>
> 1. 각 열의 폭을 각각 지정할수는 없는지요?
> XL.Cells[ir, 1].Width := 50;
> XL.Cells[ir, 2].Width := 100;
> XL.Cells[ir, 3].Width := 150; 식으로요.
>
> 2. 헤더부에 정렬을 하고 싶은데 어떻게 하면 되는지요?
> 이상 답변 부탁드립니다.
> 그럼, 수고하세요.
WS.Range['E2','E2'].ColumnWidth := 40;
E2 <- 암꺼나 같은 숫자로 하면 되네여.. Column은 숫자가 변해도 같은 Column이니깐.
쩝!
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
이상현
•
2001.08.08 19:50
1
COMMENTS
/
0
LIKES
동영상재생기 만들때 고수님도와줘요
류종택
•
2001.08.08 22:58
TMedeaPlayer를 사용하시는 거라면.. OnNotify라는 이벤트를 사용하시기 바랍니다.. 아래는 델파이 핼프...
초보임다
•
2001.08.08 19:25
1
COMMENTS
/
0
LIKES
sql 문제인거 같은데...(급합니다 3일째)
박장용
•
2001.08.08 19:55
mssql에선 outer join을 어떻게 쓰는지 구분규칙을 잘 모르겠는데요.. 매뉴얼이나 아시는분한테 물어보시...
jwonshin
2001.08.08 18:54
0
COMMENTS
/
0
LIKES
Unix 서버의 Resource,,Storage,Process 보기
궁구미
2001.08.08 18:25
0
COMMENTS
/
0
LIKES
인터베이스에서 서브쿼리는 어떻게 하나여?(냉무)
난새
2001.08.08 18:08
0
COMMENTS
/
0
LIKES
ftp에서 폴더전체삭제 콤포넌트좀 추천해주세요,,,
초보
2001.08.08 09:00
0
COMMENTS
/
0
LIKES
MDB관련 입니다.
우도연
2001.08.08 05:27
0
COMMENTS
/
0
LIKES
ZEOS UPDATESQL을 쓰는데요.....
연기훈
•
2001.08.08 04:28
1
COMMENTS
/
0
LIKES
Quick Report 에서 QRDBText 가 자기 맘디루 움직여요..
김지엽
•
2001.08.11 05:31
Alignment 프로퍼티는 확인하셨나요?
점시기
•
2001.08.08 04:14
2
COMMENTS
/
0
LIKES
TQuery에서 requestlive := true시..
류종택
•
2001.08.08 04:25
RequestLive와 토큰 에러는 상관관계가 없습니다.. 델1 때.. 저도 Date라는 필드를 썼다가 비슷한 경우를 ...
소리소
•
2001.08.08 04:47
물론 예약어는 사용하는 것보다는 사용하지 않는 것이 좋지요. 여기선 RequestLive 를 False로 놓고 사...
사오정
2001.08.08 04:01
0
COMMENTS
/
0
LIKES
질문 .. InEditText 좀 알려주세요
왕초보
•
2001.08.08 03:13
1
COMMENTS
/
0
LIKES
꼭 좀 도와주세요!!!
류종택
•
2001.08.08 04:28
저는 MS 계열 프로그램을 안사용해서.. 다소 SQL이 틀릴지는 모르겠지만.. 아래와 같이 해보세요.. ...
한현정
•
2001.08.08 02:39
1
COMMENTS
/
0
LIKES
delphi 3.0에서 FTP전송받는 방법 아시는분?
델파이3000
•
2001.08.08 18:22
ics를 이용해 보시져... ics에 보면 TFtpCli 란 컴포넌트가 있습니다. ExecuteCmd(FtpClient1.Receive,...
포반장
•
2001.08.08 02:33
1
COMMENTS
/
0
LIKES
남들이 찾지 못하게 파일을 숨기는 좋은 방법이 없을까요??
양병규
•
2001.08.08 06:23
몇년전에.... 소프트웨어락에 대한 책이 있었는데.... 지금도 있을라나 모르겠네여... 제가 아는것...
어피리
•
2001.08.08 01:53
1
COMMENTS
/
0
LIKES
가상 IP 와 고정 IP 호환(?) 문제
개허접
•
2001.08.08 05:15
가상 IP = A, 실 IP = B 라고 할때 소켓은 A -> B Ok A -> A Ok B -> A No B -> B Ok 고로 실에...
초보
•
2001.08.08 01:46
1
COMMENTS
/
0
LIKES
두점을 기준으로 호 그리는 방법 ?
델구래^^
•
2001.08.22 11:29
아크를 그린다는 말씀인가여?? 초보 wrote: > 이미지 위의 두점을 사이를 호로 그리는 방법을 알고 ...
cjw
•
2001.08.08 01:41
3
COMMENTS
/
0
LIKES
DB=>Excel저장시 엑셀의 Cell의 Width변경 가능한지...
DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여 저장할려고 합니다. 가능한지요?
박장용
•
2001.08.08 04:57
cjw wrote: > DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여 > 저장할려고 합니...
cjw
•
2001.08.13 19:31
박장용 wrote: > cjw wrote: > > DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여 ...
Superdev
•
2001.11.02 01:42
cjw wrote: > 박장용 wrote: > > cjw wrote: > > > DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 ...
델초보2
•
2001.08.08 01:39
1
COMMENTS
/
0
LIKES
검색에 대해서....
지나다가...
•
2001.08.08 04:47
change event는 말 그대로 내역이 변경될때마다 실행되는 이벤트입니다. 만약 enter Key를 눌렀을때 검색...
용이...
2001.08.08 01:19
0
COMMENTS
/
0
LIKES
Listview column에 화살표 이미지 넣기는 어떻게?
몬나니
2001.08.08 01:07
0
COMMENTS
/
0
LIKES
퍼스널 오라클의 가격은?
일본 초보자
2001.08.08 00:56
0
COMMENTS
/
0
LIKES
스레드에서의 타이머
cjw
2001/08/08 01:41
Views
405
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> DB그리드의 데이타를 엑셀로 저장하는데 엑셀을 각 셀의 폭을 변경하여
> 저장할려고 합니다.
> 가능한지요?
> 가능합니다.. autofit을 사용하시면요..
XL.Selection.Columns.AutoFit;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
샘플을 올립니다.. 적당히 수정하셔서 사용하세요..
function TFormDbri6301.fExcelSimpleConvThree(sSheetName:string;
iCurrency :string):boolean;
var XL : Variant;
ir, j : Integer;
iCount : integer;
sSumformula : string;
begin
result := True;
//엑셀
try
XL := CreateOLEObject('Excel.Application');
except
Application.MessageBox('Excel이 설치되어 있지 않습니다.',
'정보', MB_ICONINFORMATION);
result := False;
Exit;
end;
with txsBT_DBRI6300 do begin
DisableControls;
try
XL.WorkBooks.Add; //페이지 생성
XL.ActiveSheet.Name := sSheetName; //쉬트명 지정
ir := 1; //현재 엑셀의 Row수
//검색조건 출력
XL.Cells[ ir, 1].Value := '청구년월 : ' + mpickerSalesDate3.GetFormatText;
inc(ir);
XL.Cells[ ir, 1].Value := '통화구분 : ' + cboxCurrency3.Text;
inc(ir);
if rbtn31.Checked then XL.Cells[ir,1] := '구 분 : 청구분'
else XL.Cells[ir,1] := '구 분 : 확정분';
inc(ir);
//첫번째 서비스를 연다.
if not fServiceCall(3) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//첫번째 표 헤더 작성
XL.Cells[ir, 1].Value := '조정구분';
XL.Cells[ir, 2].Value := '매출환급구분';
XL.Cells[ir, 3].Value := '공급가액';
XL.Cells[ir, 4].Value := '부가세';
XL.Cells[ir, 5].Value := '합계';
XL.Cells[ir, 6].Value := '자동할인';
XL.Cells[ir, 7].Value := '연체료';
XL.Cells[ir, 8].Value := 'myBill할인';
XL.Cells[ir, 9].Value := '총합계';
inc(ir);
iCount := 0;
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //조정구분
XL.Cells[ir, 2].Value := '매출'; //Fieldbyname('STR22').asstring; //매출환급구분
//현재는 매출밖에 없슴.. 추후 추가
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //합계
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //자동할인
XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //연체료
XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //Mybill할인
XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //총합계
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //합계
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //자동할인
XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //연체료
XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //Mybill할인
XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //총합계
end;
next;
inc(ir);
inc(iCount);
end; // end of while
//~~~~합계 처리
XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
XL.Range[ XL.Cells[ir,3], XL.Cells[ir,9]].FormulaR1C1 := sSumformula;
inc(ir);
inc(ir);
//두번째 서비스를 연다.
if not fServiceCall(31) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 6] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//두번째 표 헤더 작성
XL.Cells[ir, 1].Value := '구분';
XL.Cells[ir, 2].Value := '건수';
XL.Cells[ir, 3].Value := '공급가액';
XL.Cells[ir, 4].Value := '부가세포함';
XL.Cells[ir, 5].Value := '원단위절사';
XL.Cells[ir, 6].Value := '선납대체';
inc(ir);
iCount := 0;
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //구분
XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //건수
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //공급가액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세포함
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //원단위절사
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //선납대체
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //공급가액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세포함
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //원단위절사
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //선납대체
end;
next;
inc(ir);
inc(iCount);
end; // end of while
//~~~~합계 처리
XL.Range[ XL.Cells[ir,1], XL.Cells[ir,1]].Value := '합계 ';
sSumformula := '=SUM(R[-'+ inttostr(iCount)+']C:R[-1]C)'; //SUM 공식
XL.Range[ XL.Cells[ir,2], XL.Cells[ir,6]].FormulaR1C1 := sSumformula;
inc(ir);
inc(ir);
//세번째 서비스를 연다.
if not fServiceCall(32) then begin
result := False;
XL := unassigned;
exit;
end;
//Header color
XL.Range[ XL.Cells[ir, 1], XL.Cells[ir, 9] ].Select;
XL.Selection.Interior.ColorIndex := xlColorGray;
XL.Selection.Interior.Pattern := xlSolid;
//세번째 표 헤더 작성
XL.Cells[ir, 1].Value := '청구종류';
XL.Cells[ir, 2].Value := '납입자수';
XL.Cells[ir, 3].Value := '매출액';
XL.Cells[ir, 4].Value := '부가세';
XL.Cells[ir, 5].Value := '청구금액';
XL.Cells[ir, 6].Value := '환급금액';
XL.Cells[ir, 7].Value := '절사액';
XL.Cells[ir, 8].Value := '선납대체';
XL.Cells[ir, 9].Value := '청구서금액';
inc(ir);
First;
while not EOF do begin
XL.Cells[ir, 1].Value := Fieldbyname('STR21').asstring; //청구종류
XL.Cells[ir, 2].Value := Fieldbyname('LONG11').asinteger; //납입자수
if iCurrency = '달러' then begin
XL.Cells[ir, 3].Value := (Fieldbyname('DOUBLE11').asfloat/100); //매출액
XL.Cells[ir, 4].Value := (Fieldbyname('DOUBLE12').asfloat/100); //부가세
XL.Cells[ir, 5].Value := (Fieldbyname('DOUBLE13').asfloat/100); //청구금액
XL.Cells[ir, 6].Value := (Fieldbyname('DOUBLE14').asfloat/100); //환급금액
XL.Cells[ir, 7].Value := (Fieldbyname('DOUBLE15').asfloat/100); //절사액
XL.Cells[ir, 8].Value := (Fieldbyname('DOUBLE16').asfloat/100); //선납대체
XL.Cells[ir, 9].Value := (Fieldbyname('DOUBLE17').asfloat/100); //청구서금액
end
else begin
XL.Cells[ir, 3].Value := Fieldbyname('DOUBLE11').asfloat; //매출액
XL.Cells[ir, 4].Value := Fieldbyname('DOUBLE12').asfloat; //부가세
XL.Cells[ir, 5].Value := Fieldbyname('DOUBLE13').asfloat; //청구금액
XL.Cells[ir, 6].Value := Fieldbyname('DOUBLE14').asfloat; //환급금액
XL.Cells[ir, 7].Value := Fieldbyname('DOUBLE15').asfloat; //절사액
XL.Cells[ir, 8].Value := Fieldbyname('DOUBLE16').asfloat; //선납대체
XL.Cells[ir, 9].Value := Fieldbyname('DOUBLE17').asfloat; //청구서금액
end;
next;
inc(ir);
end; // end of while
//엑셀 서식지정
for j:=0 to 0 do begin
XL.Columns[j+1].Select;
XL.Selection.NumberFormatLocal := '@';
end;
for j:=1 to 8 do begin
XL.Columns[j+1].Select;
if iCurrency = '달러' then
XL.Selection.NumberFormatLocal := '#,##0.00_ ;[빨강]-#,##0.00 '
else XL.Selection.NumberFormatLocal := '#,##0_ ;[빨강]-#,##0 ';
end;
//셀 크기 조정
XL.Range[ XL.Cells[1, 1], XL.Cells[ir, 9]].Select;
XL.Selection.Columns.AutoFit;
//마무리
EnableControls;
XL.ActiveSheet.Range['A1'].Select;
XL.Visible := True;
XL := unassigned;
except
Application.MessageBox('Excel처리중 오류가 발생 했습니다. ',
'오류', MB_ICONERROR);
result := False;
XL := unassigned;
exit;
end; // end of try
end; // end of with
end;