天天看點

資料視窗導出excel時,編号變成科學計數的解決辦法

//使用資料視窗或datastore,先取資料

Ls_Sql = "select code,name from table"

If f_createds(Ls_Sql,ldst_data) <> 1 Then//f_createds是建立datastore的函數

 messagebox('提示','處理失敗,請與系統管理者聯系!) 

 Return

end if

//------------導出Excel------------//

Ls_FileName=F_GetTempFileName('excel')

if ls_filename='' or isnull(ls_filename) then 

 return

end if

if ldst_data.saveasascii(ls_filename)<>1 then

 Destroy Ldst_Data;

 messagebox('提示','資料導出失敗,請找管理者!')

 return

end if

lo_myole = Create OleObject

ll_Res = lo_myole.ConnectToNewObject("excel.application")

lo_myole.windowstate=2

lo_myole.Workbooks.Open(ls_filename)

lo_myole.ActiveWorkbook.Save()

lo_myole.rows("1:1").Delete//删除第一條dw标題

//現在編号其實已經導出了,

方法一:導出後,先使用VBA設定文本格式,再循環指派

//為了讓第一列編碼正常顯示,先将第一列格式設定為文本,再循環指派

lo_myole.Columns("A:A").Select

lo_myole.Selection.NumberFormatLocal = "@"

for ll_i = 1 to ldst_data.rowcount()

 lo_myole.Cells(ll_i,1).Value = ldst_data.object.code[ll_i]

next

方法二:導出後,使用加單引号的方法循環指派

for ll_i = 1 to ldst_data.rowcount()

 lo_myole.Cells(ll_i,1).Value = " ' "+ldst_data.object.code[ll_i]

next

方法三:在取資料的sql中直接加單引号

即把第一句代碼改成:

Ls_Sql = "select ''''+code,name from table"

4個單引号?沒錯,是4個,第2個是轉義字元,取出資料是這樣的

'01010240229  名稱一

'01010240201  名稱二

弊端:資料視窗直接導入excel時,會直接顯示'01010240229,在單元格上輕按兩下後才會變成01010240229

方法四(最優方案):在取資料的sql中直接加~t

即把第一句代碼改成:

Ls_Sql = "select '~t'+code,name from table"

01010240229  名稱一

01010240201  名稱二

問題解決啦!不用循環 ,友善快捷!