以文本方式查看主题 - 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 Values2 As String() = {"出勤天数","事假天数","病假天数","中班个数","夜班个数","平日加班个数","节日加班个数","加点小时数","年月","姓名"} For i0 As Integer=0 To Values2.Length-1
|
-- 作者:bahamute -- 发布时间:2015/8/27 22:53:00 -- 谢谢回复,按你代码测试了一下,还是有问题,如果修改excel的部分值为字符,导入时仍然不报错! [此贴子已经被作者于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 -- 谢谢大红袍,这么晚打扰。 |