1

私は現在、ユーザーがWebインターフェイス(ビルド済み)を介してExcelファイルをインポートできるプロジェクトを構築しています。これにより、ファイルがサーバーに保存され(ビルド済み)、いくつかのユーザーオプションに応じてサーバー上のSQLデータベースにデータがインポートされます。 (構築されていません)。

私はVS内のSQLデータベースツールにまったく精通していないので、すべてをセットアップしようとして2日間の大部分をいじくり回してきました。BulkCopyを使用する必要があることは確かですが、使用方法がよくわからず、特定のアプリケーションに関連する具体的な例が見つからないようです。

したがって、App_Dataフォルダーには、.mdfタイトル「DeviceDatabase」があります。そのデータベースには、「Galaxy Nexus」、「Hercules」、「Ruby」の3つのテーブルがあります。

インポートした各Excelシートからそれぞれのテーブルに4つのセルをインポートしようとしています。

テーブルのcolumn1にcell(2,2)、column2にcell(2,3)、column3にcell(3,2)、column4にcell(1,1)をインポートしたいと思います。

私がこれを達成しようとしているコードは次のとおりです。

    Dim ExcelContentType As String = "application/vnd.ms-excel"
    Dim Excel2010ContentType As String = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    Dim excelConnectionString As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", SavedFile)
    Using connection As New OleDbConnection(excelConnectionString)
        Dim Command As OleDbCommand = New OleDbCommand("Select * FROM [Sheet1$]", connection)
        connection.Open()
        Using reader As DbDataReader = Command.ExecuteReader()
            Dim sqlConnectionString As String = "Data Source=.\sqlexpress;Initial Catalog=ExcelDB;Integrated Security=True"
            Using bulkCopy As New SqlBulkCopy(sqlConnectionString)
                bulkCopy.DestinationTableName = DropDown1.SelectedItem.ToString
                bulkCopy.WriteToServer(reader)
            End Using
        End Using
    End Using

問題があるのは、Excelシートから特定のセルを選択してインポートする方法がわからず、それらのセルを指定されたテーブルの特定の列にコピーする方法もわかりません。

ありとあらゆる助けは常にありがたいです。ありがとう、ザック

4

4 に答える 4

3

他の誰かがこれにつまずいた場合、彼らも助けられるかもしれないように、私は答えを投稿しています。

これが私のためにすべてを機能させたものです。(ケビンに叫ぶ)

Protected Sub Button1_Click(sender As Object, e As System.EventArgs)
    Dim appPath As String = Request.PhysicalApplicationPath
        Dim con As New System.Data.SqlClient.SqlConnection
        con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & appPath & "App_Data\Devicedatabase.MDF;Integrated Security=True;User Instance=True;"
        con.Open()
        MsgBox("open")
        con.Close()
        MsgBox("close")
    End Sub

これにより、多くの試みとフラストレーションの後で接続が開かれました。

これにより、Excelの値がデータベースにインポートされました。

 Using con As New SqlClient.SqlConnection With
{
    .ConnectionString =
    "Data Source=.\SQLEXPRESS;AttachDbFilename=" & appPath & "App_Data\Devicedatabase.MDF;Integrated Security=True;User Instance=True;"
}
Using cmd As New SqlClient.SqlCommand With
    {
        .Connection = con,
        .CommandText = "INSERT INTO " & """" & DropDownList1.SelectedItem.ToString & """" & "ColumnName1, ColumnName2)VALUES (@Col1,@Col2)"
    }
    cmd.Parameters.Add(New SqlClient.SqlParameter With {.DbType = DbType.String, .ParameterName = "@Col1"})
    cmd.Parameters.Add(New SqlClient.SqlParameter With {.DbType = DbType.String, .ParameterName = "@Col2"})
    cmd.Parameters(0).Value = "Value obtained from Excel"
    cmd.Parameters(1).Value = "Value obtained from Excel"
    con.Open()
    Dim Result As Integer = cmd.ExecuteNonQuery
    If Result <> 1 Then
        MessageBox.Show("Insert failed.")
    Else
        MessageBox.Show("Row inserted.")
    End If

End Using
End Using

みんな楽しんで!

于 2012-09-18T23:01:02.060 に答える
1

これには、 Excel DataReaderdllを使用します。Excelファイルを読み取り、結果としてデータセットを提供します。

于 2012-09-12T09:15:35.323 に答える
0

接続文字列としての「abcConnectionString」およびSQLテーブルとしての「pqr_table」の単純なコード。「Sheet1」はExcelファイルのsheet1用です。重要なのはテーブル形式です。つまり、Excelnデータベースファイルの行n列は同じである必要があります

彼女は、「FileUpload1」という名前の1つのFileUploadと1つのボタンを備えたvb.netコード敵vebアプリケーションです。このコードはbutonメソッドの側にあります

Dim excelConnectionString As String = String.Empty
Dim uploadPath As String = "~/Uploads/"
Dim filePath As String = Server.MapPath(uploadPath + FileUpload1.PostedFile.FileName)
Dim fileExt As String = Path.GetExtension(FileUpload1.PostedFile.FileName)
Dim strConnection As [String] = ConfigurationManager.ConnectionStrings("abcConnectionString").ConnectionString
If fileExt = ".xls" OrElse fileExt = "XLS" Then
            excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source='" & filePath & "'" & "; Extended Properties ='Excel 8.0;HDR=Yes'"
ElseIf fileExt = ".xlsx" OrElse fileExt = "XLSX" Then
            excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties=Excel 12.0;Persist Security Info=False"
End If
Dim excelConnection As New OleDbConnection(excelConnectionString)
Dim cmd As New OleDbCommand("Select * from [Sheet1$]", excelConnection)
excelConnection.Open()
Dim dReader As OleDbDataReader
dReader = cmd.ExecuteReader()
Dim sqlBulk As New SqlBulkCopy(strConnection)
sqlBulk.DestinationTableName = "pqr_table"
sqlBulk.WriteToServer(dReader)
MsgBox("Congratulations! Successfully Imported.")
        excelConnection.Close()
于 2013-08-09T11:18:11.663 に答える
0

接続文字列としての「abcConnectionString」およびSQLテーブルとしての「pqr_table」の単純なコード。「Sheet1」はExcelファイルのsheet1用です。重要なのはテーブル形式です。つまり、Excelnデータベースファイルの行n列は同じである必要があります

これは、vb.netコードの敵のvebアプリケーションで、「FileUpload1」という名前のFileUploadが1つと、ボタンが1つあります。このコードはbutonメソッドの側にあります

Dim excelConnectionString As String = String.Empty     
Dim uploadPath As String = "~/Uploads/" 
Dim filePath As String = Server.MapPath(uploadPath + FileUpload1.PostedFile.FileName)

Dim fileExt As String = Path.GetExtension(FileUpload1.PostedFile.FileName)

Dim strConnection As [String] = ConfigurationManager.ConnectionStrings("abcConnectionString").ConnectionString

If fileExt = ".xls" OrElse fileExt = "XLS" Then
    excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source='" & filePath & "'" & "; Extended Properties ='Excel 8.0;HDR=Yes'"
ElseIf fileExt = ".xlsx" OrElse fileExt = "XLSX" Then
    excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties=Excel 12.0;Persist Security Info=False"
End If
Dim excelConnection As New OleDbConnection(excelConnectionString)
Dim cmd As New OleDbCommand("Select * from [Sheet1$]", excelConnection)
excelConnection.Open()
Dim dReader As OleDbDataReader
dReader = cmd.ExecuteReader()
Dim sqlBulk As New SqlBulkCopy(strConnection)
sqlBulk.DestinationTableName = "pqr_table"
sqlBulk.WriteToServer(dReader)
MsgBox("Congratulations! Successfully Imported.")
excelConnection.Close()
于 2013-08-09T11:22:15.277 に答える