Я полностью озадачен. Я посмотрел здесь: http://www.connectionstrings.com/excel-2007. Правильно изменил строку подключения. Мой набор данных заполнен данными. Файл Excel уже существует, но в нем нет ничего, кроме строки заголовка. Я могу 'Я не понимаю, почему набор данных не может перенести значения в Excel. Единственное, что он делает, это вставляет несколько строк. Пока что ничего не указывает на то, что что-то не так. После двух дней стуча головой об этом, я пришел заВаш мудрый совет.
Protected Sub loadResxToExcel()
Dim connString As String = ConfigurationManager.ConnectionStrings("xlsx").ConnectionString
Dim oledbConn As OleDbConnection = New OleDbConnection(connString)
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn)
Dim updCmd As OleDbCommand = New OleDbCommand("UPDATE [Sheet1$] SET [Control] = @updCtrl, [Text] = @updText, [Comment] = @updCmnt, [English - en-US] = @updEngl, [Spanish - es-MX] = @updSpnh, [German - de] = @updGemn WHERE [ID] = @oldID", oledbConn)
Dim insCmd As OleDbCommand = New OleDbCommand("INSERT INTO [Sheet1$] ([ID], [Control], [Text], [Comment], [English - en-US], [Spanish - es-MX], [German - de]) VALUES (@id, @ctrl, @text, @cmnt, @engl, @spnh, @gemn)", oledbConn)
Dim updParamArray As OleDbParameter() = { _
New OleDbParameter("@updID", OleDbType.LongVarChar), _
New OleDbParameter("@updctrl", OleDbType.LongVarChar), _
New OleDbParameter("@updText", OleDbType.LongVarChar), _
New OleDbParameter("@updCmnt", OleDbType.LongVarChar), _
New OleDbParameter("@updEngl", OleDbType.LongVarChar), _
New OleDbParameter("@updSpnh", OleDbType.LongVarChar), _
New OleDbParameter("@updGemn", OleDbType.LongVarChar) _
}
Dim insParamArray As OleDbParameter() = { _
New OleDbParameter("@id", OleDbType.LongVarChar), _
New OleDbParameter("@ctrl", OleDbType.LongVarChar), _
New OleDbParameter("@text", OleDbType.LongVarChar), _
New OleDbParameter("@cmnt", OleDbType.LongVarChar), _
New OleDbParameter("@engl", OleDbType.LongVarChar), _
New OleDbParameter("@spnh", OleDbType.LongVarChar), _
New OleDbParameter("@gemn", OleDbType.LongVarChar) _
}
For Each oleParam As OleDbParameter In insParamArray
oleParam.Value = ""
Next
For Each oleParam As OleDbParameter In updParamArray
oleParam.Value = ""
Next
insCmd.Parameters.AddRange(insParamArray)
updCmd.Parameters.AddRange(updParamArray)
Dim oleda As OleDbDataAdapter = New OleDbDataAdapter()
oleda.SelectCommand = cmd
oleda.InsertCommand = insCmd
oleda.UpdateCommand = updCmd
Dim ds As DataSet = New DataSet()
Try
If Not xmlOriginFile Is Nothing Then
Dim fileNav As XPathNavigator = xmlOriginFile.CreateNavigator()
Dim fileItr As XPathNodeIterator = fileNav.Select("//data")
Dim childNav As XPathNavigator
' Open connection
oledbConn.Open()
oleda.Fill(ds)
ds.Tables(0).TableName = "Sheet1$"
Dim pKeys(1) As DataColumn
pKeys(0) = ds.Tables(0).Columns("ID")
ds.Tables(0).PrimaryKey = pKeys
Dim idnum As Integer = 1
While (fileItr.MoveNext())
Dim showCtrlName As String = fileItr.Current.GetAttribute("name", "")
Dim showDesc As String = String.Empty
Dim showLineNum As String = String.Empty
If fileItr.Current.HasChildren() Then
childNav = fileItr.Current
If childNav.MoveToChild("value", "") Then
showDesc = childNav.Value
End If
If childNav.MoveToNext("comment", "") Then
showLineNum = childNav.Value
End If
End If
Dim addRow As DataRow = ds.Tables(0).NewRow()
addRow.ItemArray() = New Object() {idnum, showCtrlName, showDesc, showLineNum, showDesc, String.Empty, String.Empty}
ds.Tables(0).Rows.Add(addRow)
idnum += 1
End While 'loop thru nodes
oleda.Update(ds, "Sheet1$")
End If
Catch ex As Exception
Finally
' Close connection
oledbConn.Close()
End Try
End Sub
<connectionStrings>
<add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Sample1.xls;Extended Properties=Excel 8.0"/>
<add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\cgramont\My Documents\Visual Studio 2008\WebSites\ResourceChanges\TU1371_v12.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'"/>
</connectionStrings>