Quantcast
Channel: Visual Studio and Visual Web Developer Express
Viewing all articles
Browse latest Browse all 3509

Problem reading Excel spreadsheet into SQL in Visual Web Designer 2010

$
0
0

I'm using Visual Web Designer 2010, VB.  I'm trying to create a routing whereby I can read an Excel file, manipulate the data (by adding additional columns and information) and output it back to Excel.  I found the routine (a starting point) below on the web but cannot get it to work.  The first thing I did was to create an empty table in the SQL database named ExtendedBOM.  The problem is now with Button3, the "For Each dr AS DataRow In ds1.Tables(0).Rows" , I get the message: "Cannot find Table 0." and I'm at a complete loss as to what the problem is.  Does anybody have any suggestions what I can try next?  The spreadsheet I'm trying to read in has 5 columns (Item, Quantity, Part_Number, Reference_Designators, Description) and the first line contains the header text.  Thanks!

Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient

Partial Class Excel
    Inherits System.Web.UI.Page

    Dim ds1 As New DataSet
    Dim ds2 As New DataSet

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim _filename As String = "C:\new.xls"
        Dim _conn As String
        _conn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _filename & ";" & "Extended Properties=Excel 8.0;"
        Dim _connection As OleDbConnection = New OleDbConnection(_conn)
        Dim da As OleDbDataAdapter = New OleDbDataAdapter()
        Dim _command As OleDbCommand = New OleDbCommand()
        _command.Connection = _connection
        _command.CommandText = "SELECT * FROM [Sheet1$]"
        da.SelectCommand = _command
        Try
            da.Fill(ds1, "sheet1")
            Response.Write("The import is complete!")
            Me.DataGridView1.DataSource = ds1
            Me.DataGridView1.DataMember = "sheet1"
        Catch e1 As Exception
            Response.Write("Import Failed, correct Column name in the sheet!")
        End Try
    End Sub

    Dim da As SqlDataAdapter
    Dim conn As SqlConnection
    Dim cb As SqlCommandBuilder

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("conCString").ConnectionString)
        Dim sel As String = "SELECT * FROM ExtendedBOM"
        da = New SqlDataAdapter(sel, conn)
        cb = New SqlCommandBuilder(da)
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        da.Fill(ds2, "ExtendedBOM")
        Me.DataGridView1.DataSource = ds2
        Me.DataGridView1.DataMember = "ExtendedBOM"

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        For Each dr As DataRow In ds1.Tables(0).Rows    'ERROR THIS LINE
            Dim expression As String
            expression = "myId =" + CType(dr.Item(0), Integer).ToString
            Dim drs() As DataRow = ds2.Tables(0).Select(expression)
            If (drs.Length = 1) Then
                For i As Integer = 1 To ds2.Tables(0).Columns.Count - 1
                    drs(0).Item(i) = dr.Item(i)
                Next
            Else
                Dim drnew As DataRow = ds2.Tables(0).NewRow
                For i As Integer = 0 To ds2.Tables(0).Columns.Count - 1
                    drnew.Item(i) = dr.Item(i)
                Next
                ds2.Tables(0).Rows.Add(drnew)
            End If
        Next
        Me.DataGridView1.DataSource = ds2
        Me.DataGridView1.DataMember = "ExtendedBOM"
        da.Update(ds2.Tables(0))
    End Sub
End Class


The asp portion is below:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Excel.aspx.vb" Debug="true" Inherits="Excel" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div><asp:Button ID="Button1" runat="server" Text="Button" /><br /><asp:Button ID="Button2" runat="server" Text="Button" /><br /><asp:Button ID="Button3" runat="server" Text="Button" /><br /><br /></div><asp:GridView ID="DataGridView1" runat="server"></asp:GridView></form></body></html>


Viewing all articles
Browse latest Browse all 3509

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>