在 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 可执行文件

在 Windows 7 x64 上使用 pgxnclient 时找不到 pg_config 可执行文件

安装数据表类时找不到

nmake:构建 OpenSSL 时找不到命令

运行可执行文件时找不到共享库,即使共享库存在于指定路径中