我得到的是以下异常
" Microsoft Office Access数据库引擎无法打开或写入 文件''。它已经由其他用户或您独家打开 需要获得查看和写入数据的权限。"在Econ.Open();
public partial class LBMIS1New : System.Web.UI.Page
{
OleDbConnection Econ;
SqlConnection con;
string constr, Query, sqlconn;
protected void Page_Load(object sender, EventArgs e)
{
}
private void ExcelConn(string FilePath)
{
constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);
Econ = new OleDbConnection(constr);
}
private void connection()
{
sqlconn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
con = new SqlConnection(sqlconn);
}
private void InsertExcelRecords(string FilePath)
{
ExcelConn(FilePath);
Query = string.Format("Select [Name],[City],[Address],[Designation] FROM [{0}]", "Sheet1$");
OleDbCommand Ecom = new OleDbCommand(Query, Econ);
Econ.Open();
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);
Econ.Close();
oda.Fill(ds);
DataTable Exceldt = ds.Tables[0];
connection();
//creating object of SqlBulkCopy
SqlBulkCopy objbulk = new SqlBulkCopy(con);
//assigning Destination table name
objbulk.DestinationTableName = "Employee";
//Mapping Table column
objbulk.ColumnMappings.Add("Name", "Name");
objbulk.ColumnMappings.Add("City", "City");
objbulk.ColumnMappings.Add("Address", "Address");
objbulk.ColumnMappings.Add("Designation", "Designation");
//inserting Datatable Records to DataBase
con.Open();
objbulk.WriteToServer(Exceldt);
con.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
string CurrentFilePath = Path.GetFullPath(FileUpload1.PostedFile.FileName);
InsertExcelRecords(CurrentFilePath);
}
}
答案 0 :(得分:1)
您可以通过创新的解决方案来解决此问题。使用文件的重复版本。例如将FilePath更改为该文件的副本版本。 不要忘记!最后,您应该删除副本版本。 以下是您的新InsertExcelRecords:
private void NewInsertExcelRecords(string FilePath)
{
try{
File.Copy(FilePath,FilePath += "tmp" + Path.GetExtension(FilePath));
InsertExcelRecords(FilePath);
}
finally{File.Delete(FilePath);}
}
享受...
答案 1 :(得分:1)
您可以使用文件副本...
答案 2 :(得分:0)
此错误可能由以下原因引起:
该文件仍然在机器上打开,或者如果它在网络上,则有人仍然打开它。
如果文件在网络上,则由于安全设置而导致此错误,建议将文件本地移动到服务器上。
如果文件是本地文件,那么仍然存在许可问题
解决方案
如果您已确保该文件未在其他任何位置打开,并且您已将其本地复制到服务器,请参阅以下步骤:
确保文件本地保存在服务器上,并且位于文件夹中,而不是位于根文件夹中。
一旦文件在文件夹中,请转到该文件夹的权限,并确保以下用户具有读写的完全访问权限:"网络服务"和" asp"。
授予这些用户访问该文件夹的权限后,您仍然会看到错误,请授予用户" Everyone"并测试这是否可以解决错误。
有关详细信息,请参阅:
http://community.landesk.com/support/docs/DOC-24626
此致