У меня есть процедура, которая перебирает коллекцию первенствует и .csv файл и тянет данные обратно в DataTable для обработки:Убить Шлюзы на Excel или CSV-файл
public static DataTable Get(string path, bool IsFirstRowHeader)
{
var header = "No";
var sql = string.Empty;
DataTable dataTable = null;
var pathOnly = string.Empty;
var fileName = string.Empty;
try
{
pathOnly = Path.GetDirectoryName(path);
fileName = Path.GetFileName(path);
sql = @"SELECT * FROM [" + fileName + "]";
if (IsFirstRowHeader) { header = "Yes"; }
using (var connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';"))
{
using (var command = new OleDbCommand(sql, connection))
{
using (var adapter = new OleDbDataAdapter(command))
{
dataTable = new DataTable {Locale = CultureInfo.CurrentCulture};
adapter.Fill(dataTable);
}
}
}
}
catch(Exception ex)
{
ErrorLog.Log();
}
return dataTable;
}
Однако, если пользователь просматривает этот I получите следующую ошибку:
The Microsoft Jet database engine cannot open the file
'\\cjserver\IS_CalendarImport\Staging\12-03-13done'. It is already opened exclusively
by another user, or you need permission to view its data.
Есть ли способ (желательно в коде, C#) автоматически освободить или обойти замок?
Excel всегда будет открывать файлы, запрещающие другим доступ к ним. – poke