以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:以数据集方式操作excel遇到问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73860)

--  作者:bahamute
--  发布时间:2015/8/27 22:17:00
--  请教:以数据集方式操作excel遇到问题
代码如下,横线部分代码目的是防止导入非数字,测试发现,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编辑过]

--  作者:大红袍
--  发布时间: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
--  发布时间:2015/8/27 22:53:00
--  
谢谢回复,按你代码测试了一下,还是有问题,如果修改excel的部分值为字符,导入时仍然不报错!
导入后对应值显示为0,不得其解。


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

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

--  作者:大红袍
--  发布时间:2015/8/27 22:59:00
--  

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

 

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


--  作者:bahamute
--  发布时间:2015/8/27 23:04:00
--  
我现在也怀疑生成dt1的时候都转成数值列了,但代码都写了一堆了,正在百度看看有无其他对策。

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

--  作者:大红袍
--  发布时间:2015/8/27 23:07:00
--  

sql语句这样写试试

 

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


--  作者:bahamute
--  发布时间:2015/8/27 23:12:00
--  
我原来用的是select *
是这样吗?接个+号和单引号什么意思?
select 出勤天数 as 出勤天数,...

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

--  作者:大红袍
--  发布时间:2015/8/27 23:24:00
--  

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

 

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

 


--  作者:bahamute
--  发布时间:2015/8/27 23:51:00
--  
你好厉害,我都没搜到。
--  作者:bahamute
--  发布时间:2015/8/27 23:52:00
--  
谢谢大红袍,这么晚打扰。