ตอนรันในเครื่องสามารถเข้าไปอ่านค่าได้ปกติ แต่พออัพขึ้น server มัน Error ครับ เหมือนจะติด Dim xlApp As New excel.Application
Dim xlBook As excel.Workbook
Dim xlSheet1 As excel.Worksheet ตัวนี้ครับ (ถ้าเปิดจะ Error เลย)
เครื่องเป็น XP Microsoft Excel 14.0 Object Library(Excel 2010)
Code (VB.NET)
Private Sub BnImportDBNow_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles BnImportDBNow.ServerClick
If Me.FileUpload1.HasFile Then
'*** Create Excel.Application ***'
Dim xlApp As New excel.Application
Dim xlBook As excel.Workbook
Dim xlSheet1 As excel.Worksheet
Try
Dim ChkFile As String = System.IO.Path.GetExtension(FileUpload1.FileName)
If Not ChkFile.ToUpper = ".XLSX" Or ChkFile.ToUpper = ".XLS" Then
DisplayAJAXMessage(Page, "รองรับการอัพโหลดเฉพาะไฟล์ Excel(.xlsx, .xls)")
Exit Sub
End If
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As New DataTable
Dim UlFileName As String
UlFileName = "MyXls/" & System.IO.Path.GetFileName(FileUpload1.FileName)
'*** Save Images ***'
Errorss.InnerText = Server.MapPath(UlFileName)
FileUpload1.PostedFile.SaveAs(Server.MapPath(UlFileName))
Try
xlBook = xlApp.Workbooks.Open(Server.MapPath(UlFileName))
xlBook.Application.Visible = False
xlSheet1 = xlBook.Worksheets(1)
Catch ex As Exception
Errorss.InnerText = "Error"
End Try
'*** Create DataTable ***'
Dim DT As New System.Data.DataTable
DT.Columns.Add("Itemcode", GetType(System.String))
DT.Columns.Add("ItemName", GetType(System.String))
DT.Columns.Add("Unitcode", GetType(System.String))
DT.Columns.Add("QTY", GetType(System.Double))
DT.Columns.Add("WHCODE", GetType(System.String))
DT.Columns.Add("GroupCount", GetType(System.Double))
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Server.MapPath(UlFileName) & "';Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
MyCommand.Fill(DtSet)
For i As Integer = 0 To DtSet.Rows.Count - 1
MsgBox(DtSet.Rows(i).Item("Itemcode") & " " & DtSet.Rows(i).Item("ItemName") & " " & DtSet.Rows(i).Item("Unitcode") & " " & DtSet.Rows(i).Item("QTY"))
Next
xlApp.Application.Quit()
xlApp.Quit()
xlSheet1 = Nothing
xlBook = Nothing
xlApp = Nothing
DisplayAJAXMessage(Page, "อัพโหลดข้อมูลเรียบร้อยแล้ว")
Catch ex As Exception
DisplayAJAXMessage(Page, "เกิดข้อผิดพลาดระหว่างบันทึก กรุณาลองใหม่อีกครั้ง")
xlApp.Application.Quit()
xlApp.Quit()
xlSheet1 = Nothing
xlBook = Nothing
xlApp = Nothing
Exit Sub
End Try
Else
DisplayAJAXMessage(Page, "กรุณาเลือกไฟล์ Excel ที่จะอัพโหลด")
Exit Sub
End If
End Sub
Tag : .NET, Ms SQL Server 2005, Excel (Excel.Application), Web (ASP.NET), VB.NET