外部表格与Excel 2007不在预期的格式OLEDB 12.0中
我开发了一个WEB API服务,当用户上传时,将从excel文件中读取数据。
我使用OLEDB如下:
if (Path.GetExtension(filePath).ToUpper() == ".XLS") { oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\""); } else { oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"); } oledbConn.Open(); //Exception thrown at here OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter oleda = new OleDbDataAdapter(); DataSet ds = new DataSet(); cmd.Connection = oledbConn; cmd.CommandText = "SELECT DISTINCT(["+mo_field+"]),["+model_field+"],["+content_filed+"] FROM ["+ecn_field+"] WHERE ["+mo_field+"] IS NOT NULL AND ["+active_field+"] ='1'"; oleda = new OleDbDataAdapter(cmd); oleda.Fill(ds,"NewMO");
但是抛出exception:
外部表格不是预期的格式
我的服务器安装了Windows Server 2012 RC2 64位,所以我已经尝试安装Microsoft数据库引擎2010重新分配32位/ 64位。 和Microsoft数据库引擎2007年32位。 但它仍然不起作用。 我search了3天,每个post都表示安装Microsoft数据库引擎将修复错误。 此代码适用于Office 2010/2013。
非常感谢你的帮助!
var ds = new DataSet(); var da = new OleDbDataAdapter("SELECT DISTINCT(["+mo_field+"]),["+model_field+"],["+content_filed+"] FROM ["+ecn_field+"] WHERE ["+mo_field+"] IS NOT NULL AND ["+active_field+"] ='1'", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePath + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1'"); da.Fill(ds,"NewMO");
并确保该文件是一个真正的Excel文件,在Excel中打开它。
更新
这里有几个来自https://www.connectionstrings.com/excel/的连接string来尝试
foreach (var cs in new string[] { "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES';", "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0; HDR = Yes; IMEX = 1';" }) try { using (var con = new System.Data.OleDb.OleDbConnection(cs)) con.Open(); MessageBox.Show(cs + " worked bro!!"); } catch { } foreach (var cs in new string[] { "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + filePath + ";", "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=" + filePath + ";", "Driver={Microsoft Excel Driver (*.xls)};Dbq=" + filePath + ";ReadOnly=0;"}) try { using (var con = new System.Data.Odbc.OdbcConnection(cs)) con.Open(); MessageBox.Show(cs + " worked bro!!"); } catch { }
- C#exception:外部表格不是预期的格式。 而使用excel与oledb
- EPPlus AddPicture导致Excel 2007文件损坏
- 有没有办法强制Microsoft.Jet.OLEDB获取date在Excel中的MM / DD / YYYY格式的列?
- 我怎么能做到这一点“select * from 其中列是L”在Excel中使用OLEDB的C#?
- Office Addin – 以编程方式导入* .exportedUI设置文件
- VSTO – 激活“跟踪更改”在Excel工作簿与C#
- C#无法将欧元符号打印到文件中(使用Excel打开时)
- 如何停止Py_Initialise使应用程序崩溃?
- 没有文件系统访问的FileUploadControl