现在的位置: 首页 > 综合 > 正文

数据窗口导出excel时,编号变成科学计数的解决办法

2018年02月07日 ⁄ 综合 ⁄ 共 1274字 ⁄ 字号 评论关闭

//使用数据窗口或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  名称二

 

问题解决啦!不用循环 ,方便快捷!

抱歉!评论已关闭.