以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有一台电脑导入excel会报错。服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144401)

--  作者:chen37280600
--  发布时间:2019/12/19 9:18:00
--  有一台电脑导入excel会报错。服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))
使用狐表最新版本。之前一直都会报错,与版本无关的。
考勤数据比较保密,需要测试话,我可以联系客服发源码

1.报错截图:

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

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

错误所在事件:窗口,MainForm,Button1,Click
详细错误信息:
服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))

2.导入代码如下:
\'因为Excel Vba的缘故,用普通的狐表sheet方法导入,会导致日期列里的时间没有了,所以要用VBA和二维数组快速导入

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xlsx; *.xls" \'设置筛选器
dlg.Title="请选择从钉钉导出的原始Excel数据"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(3)
    
    If Ws.Name ="原始记录" Then
        
        Dim st As Date = Date.Now
        
        Dim dt As DataTable = DataTables("原始记录")
        dt.DataRows.Clear
        
        Try
            
            Dim Rg As MSExcel.Range = Ws.UsedRange
            Dim ary = rg.value
            
            \'重点看这里,自己根据表格位置调整导入把---
            Dim t As Table =Tables("原始记录")
            t.StopRedraw
            
            
            Dim pb As WinForm.ProgressBar = e.Form.Controls("ProgressBar1")
            pb.Minimum = 0
            pb.Maximum = rg.Rows.Count -4
            pb.Value =0
            pb.Visible =True
            
            For n As Integer = 4 To rg.Rows.Count
                Dim nr As Row = t.AddNew
                nr("姓名") = ary(n,1)
                nr("UserId") = ary(n,5)
                nr("打卡时间") = ary(n,8)
                nr("打卡结果") = ary(n,9)
                
                If (n-4) Mod 10 = 0 Then
                    pb.Value = n-4
                End If
                
            Next
            \'重点看这里,自己根据表格位置调整导入把---
            pb.Value = pb.Maximum
            t.ResumeRedraw
            dt.Save
            t.AutoSizeCols
            
            MessageBox.Show("导入成功,耗时: " & (Date.Now - st).TotalSeconds & "秒")
            pb.Visible =False
        Catch ex As Exception
            MessageBox.Show("导入失败!原因:" & ex.message ,"提示")
        Finally
            App.Quit
        End try
    Else
        MessageBox.show("该Excel表第三个工作簿名字不是\'原始记录\',不能导入")
    End If
End If
[此贴子已经被作者于2019/12/19 9:19:04编辑过]

--  作者:有点蓝
--  发布时间:2019/12/19 9:43:00
--  
这种一般是系统的问题,和程序无关:https://www.baidu.com/baidu?word=0x80010105