又要麻烦大家了,将数据导入Excel所出现的一些问题。

RedShoes 2003-08-22 07:56:05

程序是用ADO写的,数据库是Access。

在倒入的过程中所出现的问题是,身份证的字段比较长,有18位或15位的,但是在导入Excel之后,Excel会自作聪明将其转为科学记数法,例如身份证号“310105196604092000”会变为3.10105E+17 。

还有比如工作证编号共有6位,象“008562”这类前面带零的工作证编号,导入Excel之后Excel也会动把前面两位0给去掉变成了“8562”。

虽然在导入之后都可以用手工的办法更改过来,但总是觉得不方便,请问有什么方法可以避免这些问题的出现?
...全文
109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedShoes 2003-08-23
  • 打赏
  • 举报
回复

哦,我试了一下,好象是这个样子:

For i = 0 To rs.Fields.Count - 1
xlworksheet.Cells(intcurrentrow, intcurrentcol) = "'" & rs.Fields(i).Value
intcurrentcol = intcurrentcol + 1
Next
RedShoes 2003-08-23
  • 打赏
  • 举报
回复

不好意思,我想问一下各位 ,将数据导入Excel的代码是这一段:

For i = 0 To rs.Fields.Count - 1
xlworksheet.Cells(intcurrentrow, intcurrentcol) = rs.Fields(i).Value
intcurrentcol = intcurrentcol + 1
Next

你们所说的加单引号是加在什么地方?
RedShoes 2003-08-23
  • 打赏
  • 举报
回复

各位早上好,谢谢大家的回复!我将数据导出至Excel的方法也是在CSDN从别人那里学的,代码如下:

Option Explicit

Public xlapplication As Excel.Application 'Excel应用程序
Public xlworkbook As Excel.Workbook 'Excel工作薄
Public xlworksheet As Excel.Worksheet 'Excel工作表

Private Sub cmdoutput_Click()
Dim intcurrentrow As Long
Dim intcurrentcol As Long
Dim i As Long
intcurrentrow = 1
intcurrentcol = 1
Set xlapplication = New Excel.Application
Set xlworkbook = xlapplication.Workbooks.Add
Set xlworksheet = xlworkbook.Worksheets(1)
xlapplication.Visible = True
xlapplication.ActiveWindow.DisplayGridlines = False
xlapplication.DisplayAlerts = False
For i = 0 To rs.Fields.Count - 1
xlworksheet.Cells(intcurrentrow, intcurrentcol) = rs.Fields(i).Name
intcurrentcol = intcurrentcol + 1
Next
intcurrentrow = intcurrentrow + 1
rs.MoveFirst
Do While Not rs.EOF
intcurrentcol = 1
For i = 0 To rs.Fields.Count - 1
xlworksheet.Cells(intcurrentrow, intcurrentcol) = rs.Fields(i).Value
intcurrentcol = intcurrentcol + 1
Next
intcurrentrow = intcurrentrow + 1
rs.MoveNext
Loop
Set xlworksheet = Nothing
Set xlworkbook = Nothing
Set xlapplication = Nothing
End Sub
qifanghcy 2003-08-22
  • 打赏
  • 举报
回复
来晚了!

我一直用SQL,很少用ACCESS!我的处理方法如下:
在SQL中,加半引号("'")就可以了!在ACCESS中应该也是一样的道理的!
还想懒够 2003-08-22
  • 打赏
  • 举报
回复
对,我以前导的时候也出现这个问题,后来就想啊想啊,加了一个单引号就一切OK了
schzh 2003-08-22
  • 打赏
  • 举报
回复
就是那个半角的单引号
schzh 2003-08-22
  • 打赏
  • 举报
回复
!标准做法:在导出到Excel的数据前加“'”即可强制视为文本,避免科学计数
xinshou1979330 2003-08-22
  • 打赏
  • 举报
回复
就是这样 :
自己录制宏!
方法很简单
打开EXCEL,工具……》宏……》录制新宏,然后做操作,比如设置单元格格式,操作设置完毕,最后点停止录制,然后工具……》宏……》宏……》选择刚才录制的宏,出现代码窗口,选择sub内的代码,然后复制到VB中要用的地方即可
xinshou1979330 2003-08-22
  • 打赏
  • 举报
回复
'由EXCEL里面的宏得来的
Range("A1:A65536").Select
Selection.NumberFormatLocal = "@"

你设置一下宏
bu_wen 2003-08-22
  • 打赏
  • 举报
回复
你是用什么方法导出的啊??
如果原来字段是字符型的..按记录集导出,应该不会出现这种问题的.
我也做过这样的东西,没有碰到过这个问题
sworddx 2003-08-22
  • 打赏
  • 举报
回复
用STRING格式行不行

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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