请教:当导出为EXCEL时,如何实现按照要求存储各个字段?

cyxin2121921 2009-11-10 04:13:48
下面是一段导出为EXCEl的程序,我在comptable_1表中定义的材料编码为字符类型的,字段中存在类似“0123456”这样的存储形式,但是导出来的结果却是‘123456’,请问下面的代码该做如何修改?

我曾经想对
Case aFldList[i, 2] = "C"  && 字符/字符串 
vValue = Trim(vValue)

这里面做了修改为
vValue = cast(Trim(vValue) as c(20))

但是结果没有发生变化,请问该如何才能让其保存为‘0123456’的形式?

SET SAFETY OFF
SET ESCAPE OFF
Close Databases All
Set Date YMD
Set Century On
USE comptable_1 ALIAS FoxTable IN 0
SELECT FoxTable
oExcelSheet = Getobject("","Excel.Sheet") && 产生Excel对象
oExcelApp = oExcelSheet.Application
oExcelApp.Workbooks.Add()
oExcelApp.ActiveWindow.WindowState=2
oSheet = oExcelApp.ActiveSheet
nFldCount = Afields(aFldList, "FoxTable") &&把当前表的结构信息存放到数组中,并返回表的字段数
For i = 1 To nFldCount
oSheet.Cells(1,i).Value = aFldList[i, 1] &&将表的字段名复制到对应的单元格中
Endfor
cRecc = Str(Reccount("FoxTable")) &&返回当前表的记录数目
Scan
Wait Window Alltrim(Str(Recno())) + "/" + cRecc Nowait &&用来显示当前拷贝记录数
For i = 1 To nFldCount
vValue = .Null.
If At(aFldList[i, 2], "CDLMNFIBYT") = 0
Loop
Endif
cFldName = aFldList[i, 1]
vValue = Evaluate(cFldName)
Do Case
Case aFldList[i, 2] = "C" && 字符/字符串
vValue = Trim(vValue)
Case Inlist(aFldList[i, 2], "N", "F", "I", "B", "Y") && 数值
Otherwise
vValue = .Null.
Endcase
If Vartype(vValue) = "C" And Empty(vValue)
Loop
Endif
If Not Isnull(vValue)
oSheet.Cells(Recno("FoxTable")+1, i).Value = vValue
Endif
Endfor
Endscan
cChrStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To nFldCount
cColumn = Substr(cChrStr, Int((i-1)/26), 1) + Substr(cChrStr, Iif(Mod(i, 26)= 0, 26, Mod(i, 26)) , 1)
oSheet.Columns(cColumn + ":" + cColumn).ColumnWidth = 12
Endfor
=Messagebox("转换完毕!", 64, "OK")
Close Databases All
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyxin2121921 2009-12-04
  • 打赏
  • 举报
回复
sf
ACMAIN_CHM 2009-11-11
  • 打赏
  • 举报
回复
VFP全面控制EXCEL

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。

http://blog.csdn.net/apple_8180/archive/2006/04/22/672913.aspx
ACMAIN_CHM 2009-11-11
  • 打赏
  • 举报
回复
如果需要设置EXCEL的格式,则你需要用excel.application 来进行操作。

你可以参考一下十豆三博客中的例子。
WWWWA 2009-11-11
  • 打赏
  • 举报
回复
or
If Not Isnull(vValue)
If Vartype(vValue) = "C"
oSheet.Cells(Recno("FoxTable")+1, i).Value = "'"+vValue
else
oSheet.Cells(Recno("FoxTable")+1, i).Value = vValue
endif
Endif
WWWWA 2009-11-11
  • 打赏
  • 举报
回复
If Not Isnull(vValue)
oSheet.Cells(Recno("FoxTable")+1, i).Value = vValue
Endif
->
If Not Isnull(vValue)
If Vartype(vValue) = "C"
oSheet.Cells(Recno("FoxTable")+1, i).NUMBERFORMATLOCAL = '@'
endif
oSheet.Cells(Recno("FoxTable")+1, i).Value = vValue
Endif
wwwwb 2009-11-10
  • 打赏
  • 举报
回复
因为你没有在EXCEL中设置,设置EXCEL对应单元格式为文本,这种方式好一些
WWWWA 2009-11-10
  • 打赏
  • 举报
回复
Case aFldList[i, 2] = "C" && 字符/字符串
vValue = Trim(vValue)
设置EXCEL对应单元格式为文本
OR
在前面加 '
示例:
ZX.CELLS.ITEM( J , 2 ).NUMBERFORMATLOCAL = '@'
你的代码太长了,自行修改一下吧

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧