簡體   English   中英

使用C#將數據更新到Excel工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM