Компонент Microsoft access database engine не может открыть или записать файл ошибка
Я попытался импортировать лист excel в базу данных. Я устал от приведенного ниже кода и получаю ошибку "
The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data."
Лист Excel-это не где-нибудь открыт, когда я выполнить код..
Пожалуйста помогите
Заранее спасибо.
Что я уже пробовал:
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 InsertExcelRecords(string FilePath) { ExcelConn(FilePath); Query = string.Format("Select [Account_name],[Key_Risks],[Mitigation_Plan],[Contingency_plan],[Status_in_detail],[Flag],[Rdate],[LableDate],[Pool_name],[Group_name],[Lastupdatedate] 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]; SqlConnection con = new SqlConnection(cs); //creating object of SqlBulkCopy SqlBulkCopy objbulk = new SqlBulkCopy(con); //assigning Destination table name objbulk.DestinationTableName = "ERP_Mgmt"; //Mapping Table column objbulk.ColumnMappings.Add("Account_name", "Account_name"); objbulk.ColumnMappings.Add("Key_Risks", "Key_Risks"); objbulk.ColumnMappings.Add("Mitigation_Plan", "Mitigation_Plan"); objbulk.ColumnMappings.Add("Contingency_plan", "Contingency_plan"); objbulk.ColumnMappings.Add("Status_in_detail", "Status_in_detail"); objbulk.ColumnMappings.Add("Flag", "Flag"); objbulk.ColumnMappings.Add("Rdate", "Rdate"); objbulk.ColumnMappings.Add("LableDate", "LableDate"); objbulk.ColumnMappings.Add("Pool_name", "Pool_name"); objbulk.ColumnMappings.Add("Group_name", "Group_name"); objbulk.ColumnMappings.Add("Lastupdatedate", "Lastupdatedate"); //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); }
Dave Kreskowiak
Имеет ли пользователь права на запись в папку, в которой находится лист Excel? Если в разделе Program Files, то ответ на этот вопрос будет отрицательным.
Renjith_R
Спасибо за быстрый ответ..
я создал папку на диске e.. тем не менее путь к файлу отображается следующим образом "C:\Program файлы (x86)\Общие файлы\Microsoft Shared\DevServer\10.0\ImportTest.xlsx"
Где я должен хранить excel ?
Dave Kreskowiak
Это зависит от ваших бизнес-правил и требований. Я не могу сказать вам, куда поместить файл Excel. Я могу сказать вам, что в какую бы папку ни попал лист, пользователь должен иметь права на запись в эту папку.
Что касается пути, который вы придумываете, действительно ли лист Excel существует на этом пути?
Richard Deeming
Похоже, это тот же самый вопрос, который "paul_vin" опубликовал три дня назад:
https://www.codeproject.com/Questions/1200094/Error-while-inserting-excel-sheet-data-into-databa[^]
Вы работаете над одним и тем же проектом или вам обоим дали одно и то же домашнее задание? Если это домашнее задание, то ваш учитель, очевидно, не очень хорошо объяснил разницу между клиентом и сервером, а также то, как работает загрузка файлов ASP.NET приложения.