在 DataSet 中填充数据时找不到可安装的 ISAM
Posted
技术标签:
【中文标题】在 DataSet 中填充数据时找不到可安装的 ISAM【英文标题】:Could not find installable ISAM while filling data in DataSet 【发布时间】:2014-01-06 11:42:59 【问题描述】:我知道这个问题是重复的,但我的问题是我已经尝试了几乎所有解决方案的链接,但我没有成功。所以这里是场景: 我有一个输入类型 = 文件 & 当我点击提交按钮时,它会发布文件。
代码如下:
[HttpPost]
public ActionResult Index(HttpPostedFileBase excel_File)
if (excel_File != null)
//Save the uploaded file to the disc.
string saved_FileName = Path.Combine(@ConfigurationManager.AppSettings["excel_file_storage_path"] + excel_File.FileName); // Taking file upload location from web.config
excel_File.SaveAs(saved_FileName);
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties=Excel 12.0 Xml;HDR=YES", saved_FileName);
//Fill the dataset with information from the Sheet1 worksheet.
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds); // I get error here.
DataTable data = ds.Tables[0];
var obj_Table = new DataTable("Sample_Upload_Expense");
obj_Table.Columns.Add("Id", typeof(Int16));
obj_Table.Columns.Add("Name", typeof(string));
for (int i = 0; i < data.Rows.Count - 1; i++)
obj_Table.Rows.Add(data.Rows[i].Field<double>("Id"), data.Rows[i].Field<string>("Name"));
var arrParam = new List<SqlParameter>();
var para = new SqlParameter();
para.ParameterName = "@RowList";
para.SqlDbType = System.Data.SqlDbType.Structured;
para.Value = obj_Table;
var pNumRowsChanged = new SqlParameter("@NumRowsChanged", SqlDbType.Int);
pNumRowsChanged.Value = 0;
arrParam.Add(para);
arrParam.Add(pNumRowsChanged);
string proc = "SPInsertExpense";
int no = DataProvider.ProcRetunAffectedRows(proc, arrParam);
return View();
帮帮我。我被困住了 2 天,我无法找到解决方案。
web.config 中的文件路径:
<appSettings>
<add key="excel_file_storage_path" value="D:\webapps\uploads\UploadedExcelDocuments\" />
</appSettings>
我试过了:
-
我安装了 2007 Office System Driver - Data Connectivity Components 以解决任何连接问题,但它不起作用。
尝试在数据源周围加上单引号。
我将静态路径放在连接字符串中,但这也不起作用。
还有this,虽然这与我的问题无关。
【问题讨论】:
@pnuts okies,然后我给你举个例子,我尝试过但没有用。 【参考方案1】:终于成功了。我试过this,它奏效了。实际在连接字符串中,需要两个;(分号)结尾。所以我的 connectionString 必须如下所示:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties='Excel 12.0 Xml;HDR=YES;';", saved_FileName);
【讨论】:
以上是关于在 DataSet 中填充数据时找不到可安装的 ISAM的主要内容,如果未能解决你的问题,请参考以下文章
错误:在 Docker 中的 Alpine 上安装 psycopg2 时找不到 pg_config 可执行文件
安装 gulp-converter-tjs 时找不到 Python 可执行文件