Foxtable(狐表)用户栏目专家坐堂 → 请教:以数据集方式操作excel遇到问题


  共有2478人关注过本帖树形打印复制链接

主题:请教:以数据集方式操作excel遇到问题

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:以数据集方式操作excel遇到问题  发帖心情 Post By:2015/8/27 22:17:00 [只看该作者]

代码如下,横线部分代码目的是防止导入非数字,测试发现,excel表里明明是汉字,代码却不提示错误,难不成生成dt1表的时候,就已经把字符都给转成0了?因为加入msg测试,弹出的应该为字符的值都变成了0.
Dim cmd As New SQLCommand
    Dim dt1 As DataTable
    Dim Sheet1 As String
    Sheet1=e.Form.Controls("ComboBox1").value
    cmd.Connec
    cmd.CommandTex
    dt1 = cmd.ExecuteReader
        Dim Values2 As String() = {"出勤天数","事假天数","病假天数","中班个数","夜班个数","平日加班个数","节日加班个数","加点小时数","年月","姓名"}
        For Each dr As DataRow In dt1.DataRows
            For i0 As Integer=0 To Values2.Length-1
                If Values2(i0) = "姓名" Then
                    Continue For
                End If
                If IsNumeric(dr(Values2(i0)))=False Then
                    MessageBox.Show("非数字错误!" & vbcrlf & "位置:" & vbcrlf & "姓名:" & dr("姓名") & vbcrlf & "错误值:" & dr(Values2(i0)) & vbcrlf & "请检查.","提示")
                    e.Form.Close()
                    Return
                End If
            Next
        Next

[此贴子已经被作者于2015/8/27 22:19:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/27 22:32:00 [只看该作者]


Dim dt1 As DataTable

Dim Values2 As String() = {"出勤天数","事假天数","病假天数","中班个数","夜班个数","平日加班个数","节日加班个数","加点小时数","年月","姓名"}

For i0 As Integer=0 To Values2.Length-1
    If Values2(i0) = "姓名" Then
        Continue For
    Else
        If dt1.DataCols(values2(i0)).IsNumeric = False Then
            For Each dr As DataRow In dt1.DataRows
                Dim num As Double
                If Double.TryParse(dr(values2(i0)), num) = False Then
                    MessageBox.Show("非数字错误!" & vbcrlf & "位置:" & vbcrlf & "姓名:" & dr("姓名") & vbcrlf & "错误值:" & dr(Values2(i0)) & vbcrlf & "请检查.","提示")
                   
                    e.Form.Close()
                   
                    Return
                   
                End If
            Next
        End If
    End If
Next

 


 


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/8/27 22:53:00 [只看该作者]

谢谢回复,按你代码测试了一下,还是有问题,如果修改excel的部分值为字符,导入时仍然不报错!
导入后对应值显示为0,不得其解。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150827224956.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/8/27 22:54:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/27 22:59:00 [只看该作者]

说明你在dt1的时候,就已经转换成数值列了。

 

要不你不要用dt1,直接一个单元格一个单元格的读取。


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/8/27 23:04:00 [只看该作者]

我现在也怀疑生成dt1的时候都转成数值列了,但代码都写了一堆了,正在百度看看有无其他对策。

一格一格读因为涉及到字段名,判断麻烦,也可能是我方法不对。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/27 23:07:00 [只看该作者]

sql语句这样写试试

 

Select 出勤天数 + ' ' as 出勤天数, 姓名 Fr om [sheet1]


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/8/27 23:12:00 [只看该作者]

我原来用的是select *
是这样吗?接个+号和单引号什么意思?
select 出勤天数 as 出勤天数,...

[此贴子已经被作者于2015/8/27 23:13:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/27 23:24:00 [只看该作者]

我试了,不行,必须把excel的列全部弄成文本列才行

 

http://www.cnblogs.com/star-studio/archive/2011/11/18/2253766.html

 


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/8/27 23:51:00 [只看该作者]

你好厉害,我都没搜到。

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/8/27 23:52:00 [只看该作者]

谢谢大红袍,这么晚打扰。

 回到顶部