//使用数据窗口或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 名称二
问题解决啦!不用循环 ,方便快捷!