倒入数据到Execl的新问题,请各位帮忙解决

zhangwh6882 2002-09-17 11:52:41
使用下面的程序将sql数据倒入Excel中
在sql数据库中密码的格式为6位数字如123则显示为000123,而在excel中则显示成123,请问该怎样解决
Private Sub Command1_Click()
txtSQL = "select usr as 用户名,code as 密码 from tbl_code order by Pelmet"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Call Call_Excel
End Sub

Private Sub Call_Excel()


Dim Irow, Icol As Integer
Dim Irowcount, Icolcount As Integer
Dim Fieldlen() '存字段长度值
Dim Fieldlen1
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)

With rsPeople '所要使用的记录集

If .RecordCount < 1 Then
MsgBox ("Error 没有记录!")
Exit Sub
End If

Irowcount = .RecordCount '记录总数
Icolcount = .Fields.Count '字段总数

ReDim Fieldlen(Icolcount)
'Fieldlen(Icolcount).MoveFirst

For Irow = 1 To Irowcount + 1
For Icol = 1 To Icolcount
Select Case Irow
Case 1 '在Excel中的第一行加标题
xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1).Name
'xlSheet.Cells(Irow, Icol).Value = "汉语"
Case 2 '将数组FIELDLEN()存为第一条记录的字段长

If IsNull(.Fields(Icol - 1)) = True Then
Fieldlen(Icol) = LenB(.Fields(Icol - 1).Name)
'如果字段值为NULL,则将数组Filelen(Icol)的值设为标题名的宽度
Else
Fieldlen(Icol) = LenB(.Fields(Icol - 1))
End If

xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)
'Excel列宽等于字段长
xlSheet.Cells(Irow, Icol).Value = Format(.Fields(Icol - 1))
'向Excel的CellS中写入字段值
Case Else
Fieldlen1 = LenB(.Fields(Icol - 1))

If Fieldlen(Icol) < Fieldlen1 Then
xlSheet.Columns(Icol).ColumnWidth = Fieldlen1
'表格列宽等于较长字段长
Fieldlen(Icol) = Fieldlen1
'数组Fieldlen(Icol)中存放最大字段长度值
Else
xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)
End If
xlSheet.Cells(Irow, Icol).Value = Format(.Fields(Icol - 1))
End Select
Next
If Irow <> 1 Then
If Not .EOF Then .MoveNext
End If
Next
With xlSheet
.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Name = "黑体"
'设标题为黑体字
.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Bold = True
'标题字体加粗
.Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous
'设表格边框样式
End With
xlApp.Visible = True '显示表格
'xlBook.Save '保存

Set xlApp = Nothing '交还控制给Excel
End With


End Sub
...全文
14 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
贝笨33 2002-09-18
To zhangwh6882(天龙八不):
必须先改变单元格的格式,再往单元格里添值。否则值前面的0已经被去掉了,再改变格式也不起作用。
回复
zhangwh6882 2002-09-18
刚刚又将程序重新写了一遍(这个程序是朋友的,帮他看,一直没发现问题),发现主要问题在
xlSheet.Cells(Irow, Icol).Value = Format(.Fields(Icol - 1))上,其实去掉format()就可以了,在office 2000下一切正常,但在office xp下报“一文本方式储存的数字”错误,不知该怎样解决。
但这个问题总算搞定了,下午结贴,多谢各位的帮助
回复
zhangwh6882 2002-09-18
to deerhunter33(我爱精灵) :
这段程序运行成功,但还是达不到目的,现实的结果还是123而不是000123,还请再帮我看看
回复
对,将excel中的cell的类型设计为文本

回复
贝笨33 2002-09-17
这是因为Excel把该单元格的格式当作数字来处理了,可用下列语句:
.Range("A1:A10").Select '选择A1至A10单元格
.Selection.NumberFormatLocal = "@" '选择的单元格的格式变为字符串
回复
zxlkxy 2002-09-17
你把数字该为文本不就可以了?
回复
贝笨33 2002-09-17
To zhangwh6882(天龙八不):

我这里试下来是可以的,会不会是With后跟的对象不同。我是这样用的:
With xlApp
.Sheets(1).Select
.Range("A1:A10").Select '选择A1至A10单元格
.Selection.NumberFormatLocal = "@" '选择的单元格的格式变为字符串

End With
回复
zhangwh6882 2002-09-17
但是运行这段代码vb提示“未找到数据成员或方法”
请问将这两段代码放在
" .Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous
'设表格边框样式"
后面对么?
回复
wxyq 2002-09-17
楼上不是写了吗



这是因为Excel把该单元格的格式当作数字来处理了,可用下列语句:
.Range("A1:A10").Select '选择A1至A10单元格
.Selection.NumberFormatLocal = "@" '选择的单元格的格式变为字符串

================================================================

ok?
回复
zhangwh6882 2002-09-17
up
回复
zhangwh6882 2002-09-17
deerhunter33(我爱精灵) :还是不可以
现在问题变为怎样使单元格的类型为文本型,请大家帮忙
回复
maomaomaomao 2002-09-17
方法:按照字符串存贮到Excel中。
建议:直接把密码存到Excel表里存在安全隐患,如果使用一个加密算法,将密码的字符串进行一系列处理转换成为整数,再倒到Excel中,不但安全而且可以避免这种问题。
回复
贝笨33 2002-09-17
To zhangwh6882(天龙八不):
Selection不行的话,用.ActiveCell.NumberFormatLocal = "@" 试试
回复
zhangwh6882 2002-09-17
up
回复
zhangwh6882 2002-09-17
deerhunter33(我爱精灵)
".Range("A1:A10").Select '选择A1至A10单元格
.Selection.NumberFormatLocal = "@" '选择的单元格的格式变为字符串"
执行时警报没有selecttion数据成员,谢谢帮助
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7491

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2002-09-17 11:52
社区公告
暂无公告