[英]Updating data in to a Excel sheet using c#
我正在嘗試使用OLEDB連接更新格式為“ xlsx”的Excel工作表中的某些數據,但是無法確定連接的建立。
這是我的代碼:
String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='" + "D:\abc1.xlsx" + "';Extended Properties='Excel 8.0;HDR=Yes'";
OleDbConnection con = new OleDbConnection(sConnectionString);
con.Open();
OleDbCommand com = new OleDbCommand("select * from Sheet1",con);
OleDbDataReader reader = null;
reader = com.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0]);
}
con.Open();
Console.ReadLine();
}
運行代碼時,我面臨以下異常:
“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地計算機上注冊。
建議任何想法如何從此異常中恢復或我可以從Excel中更新數據的任何其他建議。
將您的PlatformTarget
類型從AnyCPU
更改為X86
。
腳步:
轉到項目屬性。
選擇Build
選項卡。
從PlatformTarget選項中選擇X86
。
這可能是您說過的提供程序,嘗試將其更改為與您計算機上的Excel版本匹配的提供程序
嘗試
Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\abc1.xlsx';Extended Properties="Excel 12.0 Xml;HDR=YES";
代替
也可能是未安裝excel
還要檢查您是否已為項目引用了OLEDB庫
造成此異常的原因可能有多種。
1)您可以使用OleDbEnumerator類來查找可用的提供程序。 因此,您設置了連接字符串。
2)在此之前,只需嘗試以下連接字符串即可。 字符串sConnectionString =“ Provider = Microsoft.Jet.OLEDB.4.0; Data Source ='” +“ D:\\ abc1.xlsx” +“';擴展屬性='Excel 8.0; HDR =是'”;
3)如果您使用的是64位操作系統,則沒有可用的64位版本的JET提供程序,也別無選擇。 只要要支持JET,就需要將構建目標設置為x86。
首先將另存為Excel 97-2003工作簿作為excel工作簿它將在我的項目中工作...
string filepath = Server.MapPath("~/ImportData/") + fileUpload.FileName;
OleDbConnection oconn = new OleDbConnection
(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";
Extended Properties=Excel 8.0");`
oconn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter("select * from Sheet1", oconn);
DataSet ds = new DataSet();
adp.Fill(ds);
oconn.Close();`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.