[英]Error when writing to excel worksheet using vb.net
嘗試使用VB.net 2005寫入excel工作表時收到錯誤消息
操作必須使用可更新的查詢
我通過了S / O搜索結果
https://stackoverflow.com/search?q=Operation+must+use+an+updateable+query ,
但沒有任何回應可以解決我的問題。
我的代碼是:
Dim strXLScn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & xlsFilePath.Text & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Dim XLConn As New OleDb.OleDbConnection(strXLSconn)
Dim XLcmd As New System.Data.OleDb.OleDbCommand
Dim sSQLWriteToExcel As String
strExcel = "INSERT INTO [Sheet1$A1:A1] Values ('" & sCity & "')"
Dim oleCMD As New OleDb.OleDbCommand(strExcel, XLConn)
Dim oleDA As New OleDb.OleDbDataAdapter(oleCMD)
XLConn.Open()
XLcmd.Connection = XLConn
XLcmd.CommandText = strExcel
XLcmd.ExecuteNonQuery()
XLConn.Close()
有任何想法嗎?
首先,請確保已將Option Explicit ON啟用,這將有助於嘗試使用從未聲明過的變量。 其次,從連接字符串的末尾刪除IMEX = 1。 第三,確保您的excel文檔具有標題行。 這段代碼對我有用:
Dim strXLScn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""C:\Temp\test.xls"";Extended Properties=""Excel 8.0;HDR=Yes"""
Dim XLConn As New OleDb.OleDbConnection(strXLScn)
Dim XLcmd As New System.Data.OleDb.OleDbCommand
Dim strExcel As String
Dim sCity As String = "Sydney"
strExcel = "INSERT INTO [Sheet1$] Values ('" & sCity & "')"
Dim oleCMD As New OleDb.OleDbCommand(strExcel, XLConn)
Dim oleDA As New OleDb.OleDbDataAdapter(oleCMD)
XLConn.Open()
XLcmd.Connection = XLConn
XLcmd.CommandText = strExcel
XLcmd.ExecuteNonQuery()
XLConn.Close()
(這種方法不是在VB中,而是在C#中。但是我認為它很簡單而且很短,應該可以輕松地轉換為VB。)
我發現這篇文章和其他一些文章很有用。 這是我想出的。 它可以在VS2010中使用。
請注意,Excel工作表具有標題。 因此,連接字符串中的“ HDR =是”。
這是我將如何在C#中格式化字符串。 它使用String變量(代理)和結構(地址):
“ INSERT INTO [Agencys $]([Agency],[Street1],[Street2],[City],[郵政編碼],[國家/地區代碼])VALUES('“ +代理商+”','“ +地址.Street1.Replace(“'”,“”“)+”','“ +地址.Street2.Replace(”'“,”“”)+“','” + Address.City.Replace(“ '“,”“”)+“','” + Address.PostalCode.Replace(“'”,“”“)+”','“ + Address.Country.Replace(”'“,”'' “)+”')“
請注意,該工作表被調出(“代理機構列表”),每個字段/標題(例如“ [Agency]”)都放在方括號中,並且String.Replace方法用於處理嵌入的單引號(tick)標記。
干杯!
public void InsertExcelData(String fileName, String sqlString)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;\";";
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand command = new OleDbCommand(connectionString, connection);
command.CommandText = sqlString;
// Connect to the worksheet
connection.Open();
// Do the Insert
command.ExecuteNonQuery();
// Clean up
connection.Close();
connection.Dispose();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.