请教VB从SQL导出EXCEL中遇到的单元格式问题

acmkic 2008-09-12 12:51:51
CommonDialog1.Flags = cdlOFNNoReadOnlyReturn Or cdlOFNOverwritePrompt Or cdlOFNPathMustExist Or cdlOFNExtensionDifferent Or cdlOFNNoValidate
CommonDialog1.CancelError = True
CommonDialog1.DefaultExt = ".xls"
CommonDialog1.Filter = "Excel (*.xls)|*.xls|Word (*.doc)|*.doc"
CommonDialog1.FileName = "表名"
CommonDialog1.InitDir = App.Path
CommonDialog1.ShowSave
If CommonDialog1.FilterIndex = 1 Then
d_filename = CommonDialog1.FileName & ".xls"
Else
d_filename = CommonDialog1.FileName & ".doc"
End If
DataGrid1.ExportToFile d_filename, False, 0

以上为代码,可是导出的时候遇到一个问题,某字段(字符型,中间带有符号“-”)
导出到EXCEL后,格式变成类似JULY-14 格式,请高手指点如何避免这个问题,先谢过。
...全文
186 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
acmkic 2008-09-15
嗯···对的···以前不存在文件,导出后生成文件的,
DataGrid1实际就是datagrid了,
这样导出的作用是导出当前datagrid中显示的。
可是遇到这个情况,
找不到解决办法,
不管怎样,先谢谢你了··
回复
acmkic 2008-09-14
无语了··
来个人救救我啊···
回复
jhone99 2008-09-14
看lz代码好象原来不存在文件
DataGrid1是什么控件?datagrid好象没有ExportToFile属性
回复
jhone99 2008-09-14
[Quote=引用 6 楼 acmkic 的回复:]
在EXCEL里设置,我以前也有试过
刚才也去看了下,详细情况是这样:
此字段数据为:4800-6
导出后为:Jun-00
然后我打开excel
双击此数据,当光标定位到此格里面的时候,
自动变为:4800-6-1
拉长单元格,无效,失去焦点后变回:Jun-00
选择设置单元格格式的时候,默认的是“yyyy-mm”
设置格式为‘@’的时候变成:1059357
我尝试设置成自定义格式的“yyyy-m”的时候变回:4800-6
我怀疑是不是EXCEL的设…
[/Quote]

lz的文件是不是原来已经存在,如果原来已经有,先设置为文本格式及拉长单元格,后设置不管用.
其实lz从word里复制一个身份证号码到excel实验就能知道,要先设置,后粘贴,单元格的长度要够用.

我给的代码不是lz这种导入方法,是向单元格中写的那种.
我现在没有vb没办法试lz这种方法

回复
jhone99 2008-09-12
改后的代码贴出来看看
回复
acmkic 2008-09-12
在EXCEL里设置,我以前也有试过
刚才也去看了下,详细情况是这样:
此字段数据为:4800-6
导出后为:Jun-00
然后我打开excel
双击此数据,当光标定位到此格里面的时候,
自动变为:4800-6-1
拉长单元格,无效,失去焦点后变回:Jun-00
选择设置单元格格式的时候,默认的是“yyyy-mm”
设置格式为‘@’的时候变成:1059357
我尝试设置成自定义格式的“yyyy-m”的时候变回:4800-6
我怀疑是不是EXCEL的设置的问题,发现符合条件字段即默认此“yyyy-mm”格式
不知有何良策,再次谢谢指点。
回复
jhone99 2008-09-12
呵呵,这个有点太生硬

看你程序的意思excel表的格式如表头等已经设计好了,可以不在程序中加语句
那就可以在excel中强制设为文本格式,并拉长单元格
回复
acmkic 2008-09-12
CommonDialog1.Flags = cdlOFNNoReadOnlyReturn Or cdlOFNOverwritePrompt Or cdlOFNPathMustExist Or cdlOFNExtensionDifferent Or cdlOFNNoValidate
CommonDialog1.CancelError = True
CommonDialog1.DefaultExt = ".xls"
CommonDialog1.Filter = "Excel (*.xls)|*.xls|Word (*.doc)|*.doc"

Range("B3").NumberFormatLocal = "@"
Columns("tydh").ColumnWidth = 31.13

CommonDialog1.FileName = "表名"
CommonDialog1.InitDir = App.Path
CommonDialog1.ShowSave
If CommonDialog1.FilterIndex = 1 Then
d_filename = CommonDialog1.FileName & ".xls"
Else
d_filename = CommonDialog1.FileName & ".doc"
End If
DataGrid1.ExportToFile d_filename, False, 0


这是改后的代码,小弟菜鸟,有低级错误还望见谅。
回复
acmkic 2008-09-12
谢谢先
不过还有一下问题:继续请教,
按照jhone99大哥的方法,开始提示子函数未定义,我引用一个控件后
现提示对象Range 的方法 '_Global' 失败
请继续指点,谢谢
回复
jhone99 2008-09-12
导入前强制设为文本格式,并拉长单元格

Range("B3").NumberFormatLocal = "@"
Columns("B:B").ColumnWidth = 31.13
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2008-09-12 12:51
社区公告
暂无公告