Delphi 에서 바코드 숫자를 DB에서 조회해서 나이스그리드로 불러옵니다..
거기서 엑셀로 내려받기할때 나이스그리드의 Cells[1, 1] 의 값을 Char 형식의 변수에 넣고
가져가겠금 되있는데 엑셀파일에서 보면 880917E+12 이런식으로 긴숫자 표현이 되더라구요..
이걸 정상적인 13자리 숫자로 '8809174412341' 처럼 보여지겠금 하는 방법이 있나요?
오늘 하루종일 이것만 쳐다보고 있네요..ㅠ
아래는 어디선가 퍼온걸로 쓰고있는 프로시져 입니다..
procedure TUNI350F.sbtn_f9Click(Sender: TObject);
var
BackupName: string; // 백업 이름
FH,j2,k : integer; // 파일 핸들러와 임시 변수
Buffer1 : array[0..1024] of char; // 자료를 읽어둘 변수
linef : char; // 라인 넘기기
tabk : char; // 탭 넘기기
Buffers : AnsiString; // 자료를 읽어둘 변수
begin
MGMT_NO := FormatDateTime('YYYYMMDDHHMMSS', Now);
MGMT_NO := MGMT_NO + OWN + Copy(FNM,4,3);
SaveDialog1.Filter := 'Excel files (*.xls)|*.xls';
SaveDialog1.DefaultExt := '.xls';
SaveDialog1.FileName := 'UNIQ_바코드사용내역_' + MGMT_NO;
if SaveDialog1.Execute = False then
Exit;
if FileExists(SaveDialog1.FileName) then
begin
if MessageDlg(SaveDialog1.FileName + ' 이(가) 이미 있습니다' + #13 +
'바꾸시겠습니까?', mtInformation, [mbYes,mbNo], 0) = mrYes then
begin
BackupName := ChangeFileExt(SaveDialog1.FileName, '.BAK');
RenameFile(SaveDialog1.FileName, BackupName);
end;
end;
FH := FileCreate(SaveDialog1.FileName);
linef := Chr(10);
tabk := #9;
// TiTle
Buffer1 := '';
Buffers := '';
// 첫행에 내용 삽입
for k := 0 to 10 do
begin
Buffer1 := '';
Buffers := TRIM(ng_bill.Columns[k].Title);
Move(Buffers[1],Buffer1[0],Length(Buffers));
FileWrite(FH,Buffer1,Length(Buffers));
FileWrite(FH,tabk,1);
end;
FileWrite(FH,linef,1); // <- 엑셀에서 첫행 삽입
// query to file
for j2 := 0 to ng_bill.RowCount -1 do
begin
for k := 0 to 10 do
begin
Buffer1 := '';
Buffers := TRIM(ng_bill.Cells[k,j2]);
if Buffers = '' then
Buffers := ' ';
Move(Buffers[1],Buffer1[0],Length(Buffers));
FileWrite(FH,Buffer1,Length(Buffers)); <-- 이 부분에서 값을 넘기는거 같은데..
FileWrite(FH,tabk,1); 메모리관련 함수는 잘 모르겠어요..ㅠ
end;
FileWrite(FH,linef,1);
end;
FileClose(FH);
showmessage('저장되었습니다.');
end;
|