線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1487
推到 Plurk!
推到 Facebook!

在如下的導出到excel中,工單如11194444出現錯誤

 
diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-16 10:41:46 IP:202.173.xxx.xxx 訂閱
procedure CopyDbDataToExcel(Args: array of const);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) 1;
for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I 1].Name := TDBGrid(Args[I].VObject).Name;
Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];
if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
TDBGrid(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;
jCount := 1;
while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[jCount 1, iCount 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
Inc(jCount);
TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;

使用時CopyDbDataToExcel([dbgrid1])在工單是113000015421,會出現1.13E11,如何讓他顯示成文字..

------
x
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-16 11:00:20 IP:211.75.xxx.xxx 未訂閱
Sheet.Cells[jCount + 1, iCount + 1] :=TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
這行修改如下:
if (TryStrToInt(TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString,tmpInt)) then
Sheet.Cells[jCount 1, iCount 1] :=''' IntToStr(tmpInt)//如果可轉成數字 則在數字前加單引號 讓他在Excel轉成文字格式
else
Sheet.Cells[jCount 1, iCount 1] :=TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-12-16 13:43:58 IP:202.173.xxx.xxx 訂閱
還是不行,工單12位,我把trystrtoint改為strtofloat也不行,還是哪樣,不知為何,如何設定哪單元格為文字呢
------
x
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-18 08:19:50 IP:210.65.xxx.xxx 未訂閱
將該欄位的 NumberFormatLocal 設定為 '@'
語法大致如下:
ExcelApplication1.Columns.Range_['A1','N65536'].NumberFormatLocal := '@';


Fishman
------
Fishman
diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-18 11:52:03 IP:202.173.xxx.xxx 訂閱
thanks,
------
x
系統時間:2024-05-10 5:00:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!