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 }
답변이 될련지 모르겠지만 db에는스트링으로 잡혀 있는것이 아니라고 했는데
엑셀로 전송할때는 스트링으로 전송하네여
vSheet.Cells[j, 2] := Query3.FieldByName('SMALLNAME').AsString; //TEST
여기에 보면 그렇게 되어 있네요
제 생각에는
vSheet.Cells[j, 2] := Query3.FieldByName('SMALLNAME').Text; //TEST
text라든가 value값으로 보내면 나올꺼 같은데요
그리고 왜 2번쨰 for안에서 필드카운트가 도는지 모르겠네요
레코드카운드도 아니고........
도움이 되실지 모르겠네요
허접초보였습니다.
즐코딩하세요