1、安装数据访问组件:
1)适用于office2007的
Microsoft Access Database Engine 2007 Office system 驱动程序:数据连接组件
https://www.microsoft.com/zh-cn/download/details.aspx?id=23734 (该链接已失效,直接用Microsoft Access Database Engine 2010 Redistributable就好了)
2)适用于office2010的
Microsoft Access Database Engine 2010 Redistributable
https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
此下载将安装一组组件,非 Microsoft Office 应用程序可以使用它们从 2007/2010 Office system 文件中读取数据,例如从 Microsoft Office Access 2007/2010(mdb 和 accdb)文件以及 Microsoft Office Excel 2007/2010(xls、xlsx 和 xlsb)文件中读取数据。这些组件还支持与 Microsoft Windows SharePoint Services 和文本文件建立连接。
此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。
2、在IIS应用程序池中,设置“”启用兼容32位应用程序”,此设置适用于web项目;
如图:
注意:
在下载Microsoft Access Database Engine 2010 Redistributable时会让选择下载x86的还是x64的,如图:
前提是看服务器是x64的还是x86的,x64的服务器两个版本都能安装;
如果下载安装的是x64的,那么你的桌面程序就要选择anycpu或x64发布,而web项目是不兼容的,不管你是如何发布的;
如果下载安装的是x86的,那么你的桌面程序就要选择x86发布,而web项目正常发布就好;
*总结:如果你是web项目,你就下载x86的,发布选anycpu就好了,然后设置应用程序池32位兼容就好了;
*最后说一句,用这个,是不需要安装office软件的;
3、连接字符串
主要如下两种情况:
1)使用Office 2007 OLEDB驱动程序(ACE 12.0)连接到较旧的97-2003 Excel工作簿。
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;
Extended Properties=“Excel 8.0;HDR=YES”;
“HDR =Yes;” 表示第一行包含列名,而不是数据。“HDR =No;” 表明相反;
2)读取xlsx格式的excel
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties=“Excel 12.0 Xml;HDR=YES”;
“HDR =Yes;” 表示第一行包含列名,而不是数据。“HDR =No;” 表明相反;
Microsoft.ACE.OLEDB连接字符串参考地址:https://www.connectionstrings.com/ace-oledb-12-0/