AccessDatabaseEngine.exe
https://www.onlinedown.net/soft/1180584.htm
运行软件提示错误 :未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 ,那么就需要安装这个软件了。

System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。”。

本程序的作用在于使得在office系统文件与office应用程序之间进行数据传输。
装说明注意

在安装此下载之前,必须先通过使用“控制面板”中的“添加/删除程序”,从你的计算机中卸载任何以前版本的 Access 数据库引擎。

双击硬盘上的“AccessDatabaseEngine.exe”程序文件启动安装程序。

按照屏幕上的说明完成安装。

若要使用此下载,请执行以下操作:

如果您是应用程序用户,请查阅您的应用程序文档,了解有关如何使用相应驱动程序的详细信息。

如果您是使用 OLEDB 的应用程序开发人员,请将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.12.0”。

温馨提示1:
1、该版本Office软件目前微软已经停止维护,并不再提供正版维护;

2、为了能为用户提供更好的正版软件使用体验,因此给大家提供下载版本为:Office 365/Office 2016版本;

3、使用盗版软件有法律风险,因此推荐使用正版。

#region -使用IO写入Excel-
        /// <summary>
        ///  使用IO写入Excel
        /// </summary>
        /// <param name="table">表</param>
        /// <param name="file">保存路径</param>
        public static bool dataTableToCsv(System.Data.DataTable table, string file)
        {
            string title = "";
            try
            {
                FileStream fs = new FileStream(file, FileMode.OpenOrCreate);
 
                //FileStream fs1 = File.Open(file, FileMode.Open, FileAccess.Read);
 
                StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);
 
                for (int i = 0; i < table.Columns.Count; i++)
                {
 
                    title += table.Columns[i].ColumnName + "\t"; //栏位:自动跳到下一单元格
 
                }
 
                title = title.Substring(0, title.Length - 1) + "\n";
 
                sw.Write(title);
 
                foreach (System.Data.DataRow row in table.Rows)
                {
                    string line = "";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        line += row[i].ToString().Trim() + "\t"; //内容:自动跳到下一单元格
                    }
                    line = line.Substring(0, line.Length - 1) + "\n";
                    sw.Write(line);
                }
                sw.Close();
                fs.Close();
                return true;
 
            }
            catch (Exception)
            {
                return false;
            }
        }
 
        #endregion
 
        #region- 读取csv格式的Excel文件的方法-
        ///<summary>
        ///读取csv格式的Excel文件的方法 
        ///</ummary>
        ///<param name="path">待读取Excel的全路径</param>
        ///<returns></returns>
        public static DataTable ReadExcelWithStream(string path)
        {
            DataTable dt = new DataTable();
            bool isDtHasColumn = false; //标记DataTable 是否已经生成了列
            StreamReader reader = new StreamReader(path, System.Text.Encoding.Default); //数据流
            while (!reader.EndOfStream)
            {
                string meaage = reader.ReadLine();
                string[] splitResult = meaage.Split(new char[] { ',' }, StringSplitOptions.None); //读取一行 以逗号分隔 存入数组
                DataRow row = dt.NewRow();
                for (int i = 0; i < splitResult.Length; i++)
                {
                    if (!isDtHasColumn) //如果还没有生成列
                    {
                        dt.Columns.Add("column" + i, typeof(string));
                    }
                    row[i] = splitResult[i];
                }
                dt.Rows.Add(row); //添加行
                isDtHasColumn = true; //读取第一行后 就标记已经存在列 再读取以后的行时,就不再生成列
            }
            return dt;
        }
        #endregion
 
        #region -读取xls\xlsx格式的Excel文件的方法-
        ///<summary>
        ///读取xls\xlsx格式的Excel文件的方法 
        ///</ummary>
        ///<param name="path">待读取Excel的全路径</param>
        ///<returns></returns>
        public static DataTable ReadExcelToTable(string path)
        {
            DataSet ds = new DataSet();
            //如果HDR=YES,DataTable默认的列名为Excel 第一行数据...
            //如果HDR=NO,DataTable默认的列名为F1,F2,F3...
            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意
            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                conn.Open();
                DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字
                string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字
                string strExcel = string.Format("select * from [{0}]", firstSheetName);
                OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
                adapter.Fill(ds);
                conn.Close();
            }
            return ds.Tables[0];
        }
        #endregion
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐