以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]导入EXCEL问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=58288)

--  作者:建筑人生
--  发布时间:2014/10/14 22:44:00
--  [求助]导入EXCEL问题

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.OK Then \'如果用户单击了确定按钮
    Dim Book As New XLS.Book(dlg.FileName)
   
    Dim Sheet As XLS.Sheet = Book.Sheets(0)

  Tables("水卫工程量").StopRedraw()
    Dim sts() As String = { "分项工程名称","楼层_名称","楼层_数量","构件_名称","构件_数量","构件_型号规格","管道_计算公式","管道_小计","管道_合计","备注","管道油漆特征_除锈","管道油漆特征_底漆","管道油漆特征_面漆","土方_埋地","土方_埋地深度","土方_特征","土方_长度","油漆面积_基数","油漆面积_除锈","油漆面积_底漆","油漆面积_面漆","支架_基数","支架_合计kg","备忘录" }
   
    SystemReady = False  \'关闭刷新
    Try
        \'Tables("水卫工程量").AddNew \'先添加第一行 标注行
        For x As Integer = 2 To Sheet.Rows.Count -1
            Dim r As Row = Tables("水卫工程量").AddNew \'添加2行
           
           
            For y As Integer = 0 To sts.Length -1
               
                r(sts(y)) = sheet(x,y).text
               
            Next
        Next


    Catch ex As Exception
        MessageBox.Show("计算错误")
    End try
    SystemReady = True  \'关闭刷新
End If

以上代码导入数值列或字符列没有问题,逻辑列出现错误,不知道怎么写代码

[此贴子已经被作者于2014-10-14 22:46:22编辑过]

--  作者:有点甜
--  发布时间:2014/10/14 22:47:00
--  

 判断

 

For x As Integer = 2 To Sheet.Rows.Count -1
    Dim r As Row = Tables("水卫工程量").AddNew \'添加2行
   
   
    For y As Integer = 0 To sts.Length -1
        If Tables("水卫工程量").Cols(sts(y)).IsBoolean Then
            If sheet(x,y).text = "true" Then
                r(sts(y)) = True
            Else
                r(sts(y)) = False
            End If
        Else
            r(sts(y)) = sheet(x,y).text
        End If
       
    Next
Next


--  作者:建筑人生
--  发布时间:2014/10/14 22:49:00
--  

谢谢

 


--  作者:建筑人生
--  发布时间:2014/10/14 23:00:00
--  
以下是引用有点甜在2014-10-14 22:47:00的发言:

 判断

 

For x As Integer = 2 To Sheet.Rows.Count -1
    Dim r As Row = Tables("水卫工程量").AddNew \'添加2行
   
   
    For y As Integer = 0 To sts.Length -1
        If Tables("水卫工程量").Cols(sts(y)).IsBoolean Then
            If sheet(x,y).text = "true" Then
                r(sts(y)) = True
            Else
                r(sts(y)) = False
            End If
        Else
            r(sts(y)) = sheet(x,y).text
        End If
       
    Next
Next

现在文件可以导进来了,但逻辑列没有赋值,没有道理啊

 

[此贴子已经被作者于2014-10-14 22:59:52编辑过]

--  作者:建筑人生
--  发布时间:2014/10/14 23:16:00
--  
甜大师,在吗,为什么不能赋值啊
--  作者:建筑人生
--  发布时间:2014/10/14 23:32:00
--  

 

For x As Integer = 2 To Sheet.Rows.Count -1
    Dim r As Row = Tables("水卫工程量").AddNew \'添加2行
   
   
    For y As Integer = 0 To sts.Length -1
        If Tables("水卫工程量").Cols(sts(y)).IsBoolean Then
            If sheet(x,y).text = true Then
                r(sts(y)) = True
            Else
                r(sts(y)) = False
            End If
        Else
            r(sts(y)) = sheet(x,y).text
        End If
       
    Next
Next

 

解决了,不能当字符,要按逻辑才行,谢谢甜大师


--  作者:有点甜
--  发布时间:2014/10/14 23:41:00
--  
 你excel的逻辑列,是字符还是什么?你msgbox看看。
--  作者:建筑人生
--  发布时间:2014/10/15 0:09:00
--  
以下是引用有点甜在2014-10-14 23:41:00的发言:
 你excel的逻辑列,是字符还是什么?你msgbox看看。

我也觉得是字符,但不知道为什么把“”去掉就可以导进去且可以赋值,请大师指点