簡體   English   中英

用 C# 將 Excel 轉換為 XML

[英]Convert Excel to XML with C#

我試圖將 excel 文件轉換為 XML 文件。 我成功地做到了。 但是,當我在另一台 PC 上運行 APP(我沒有 SQL 服務器管理器)時,它不再工作了。 我收到此錯誤

'Microsoft.ACE.OLEDB.16.0' 提供程序未在本地計算機上注冊

我試圖在這里解決每個已解決的問題(安裝 Microsoft Access Database Engine 2016 Redistributable,將應用程序轉換為 x86 等),但沒有任何效果。

但是由於我真的不需要(或至少我認為如此)Access,還有其他方法嗎,如何將 excel 文件轉換為 xml?

這是代碼

XmlDocument doc = new XmlDocument();

try
{               
    bool test = Environment.Is64BitProcess;
    FileName.Content = filelocation.Substring(filelocation.LastIndexOf(@"\")+1);

    if (!test)
    {
        connStr = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" + filelocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";                    
    }               

    OleDbConnection conn = new OleDbConnection(connStr);
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    DataTable dt = new DataTable();

到這里它正在工作,這是問題所在

    conn.Open();
    DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    string sheetName = dtSheet.Rows[0]["table_name"].ToString();
    cmd.CommandText = "select * from [" + sheetName + "]";
    da.SelectCommand = cmd;
    da.Fill(dt);
    conn.Close();

然后我繼續...

    DataSet ds = new DataSet();                
    ds.Tables.Add(dt);                
    oItem = dt.Rows.Count;
    oItem -= 1;

    XmlDeclaration declaire = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    declaire.Standalone = "yes";                
    XmlElement rootnode = doc.CreateElement("Wiring");                    
    doc.InsertBefore(declaire, doc.DocumentElement);
    doc.AppendChild(rootnode);                

    while (i <= oItem)
    {
        XmlElement dobEle = doc.CreateElement("Machine");

        do
        {...

還有其他方法可以解決有問題的代碼嗎?

編輯我在兩台電腦上都安裝了 Office。 我已經嘗試過.Ace.OLEDB.x(4-23 [只是為了確定])和我開發 APP v.12 和 v.16 作品的 PC。 在我部署應用程序的 PC 上,它們都不起作用

編輯 2所以我剛剛發現我在第二台計算機上安裝了 office 365,但沒有獲得完全許可的 Access(無論出於何種原因)。 有人可以確認,如果這就是它不起作用的原因嗎?

簡單易用的 excel 文件閱讀器。 https://github.com/ExcelDataReader/ExcelDataReader

我相信你也可以從 nuget 添加它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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