长沙恒恩软件有限公司 2016-09-14 06:33 采纳率: 0%
浏览 1142

C#ASP导入Excel文件报错了

一开始,建了一个测试网站,能导入Excel表格,没有报错,然后并入到其他程序时出错了,因为用到的Microsoft.Jet.OLEDB.4.0好像是32位组件,就在iis那里启用了32位应用程序,然后就报错了, (Microsoft Jet 数据库引擎打不开文件''。 它已经被别的用户以独占方式打开,或没有查看数据的权限。) 然后把测试网站也放到iis里面去,也报错了,没用iis就不报错,怎么回事啊?导入代码如下:
protected void btnGetTableName_Click(object sender, EventArgs e)
{
this.ddlTables.Items.Clear();
string sFileName = this.fuMainOne.PostedFile.FileName.ToString();
_sFileName = sFileName;
if (sFileName.Length == 0)
{
ClientScript.RegisterStartupScript(this.GetType(), "", "alert('您没有选择要求导入的Excel文件!')");
return;
}
//sFileName = this.hiddenContent1.Value;
using (OleDbConnection oledbConn = new OleDbConnection())
{
try
{
oledbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFileName + ";Extended Properties=Excel 8.0;";
oledbConn.Open();
using (DataTable dtOledb = oledbConn.GetSchema("Tables"))
{
using (DataTableReader dtReader = new DataTableReader(dtOledb))
{
while (dtReader.Read())
{
this.ddlTables.Items.Add(dtReader["TABLE_NAME"].ToString());
}
}
}
string SQLString = "select * from [" + ddlTables.SelectedValue.ToString() + "]";
OleDbCommand DBCommand = new OleDbCommand(SQLString, oledbConn);
IDataReader DBReader = DBCommand.ExecuteReader();
GridView1.DataSource = DBReader;
GridView1.DataBind();
DBReader.Close();
oledbConn.Close();
}
catch
{
ClientScript.RegisterStartupScript(this.GetType(), "", "alert('Excel文件格式不正确!')");
return;
}
}
}

  • 写回答

1条回答 默认 最新

  • it肥马 2016-09-14 06:51
    关注

    “已经被别的用户以独占方式打开,或没有查看数据的权限“,这个错误经常在,打开office浏览excel文件,同时执行程序读取时会报。先检查下是否没关闭excel文件。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?