数据窗口导出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  名称二

 

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值