を使用してファイルをアップロードしていますHttpPostedFileBase
。ファイルは問題なくアップロードされますが、そのファイル (Excel ファイル) から読み取ろうとすると、ファイルがロックされているため読み取ることができないというエラーが表示されます。ファイルからロックを解除するにはどうすればよいですか / そもそもファイルをロックしないようにするにはどうすればよいですか?
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
string path = string.Empty;
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
path = Path.Combine(Server.MapPath("~/App_Data/"), Guid.NewGuid() + fileName);
file.SaveAs(path);
file.InputStream.Flush();
file.InputStream.Close();
file.InputStream.Dispose();
// Import the file
ViewData["FileName"] = fileName;
//Added to ensure that the file had finished being written by the time I try and read it
System.Threading.Thread.Sleep(2000);
}
return RedirectToAction("Index", new{fileName = path});
}
上記のコードはファイルを読み取り、問題なく保存しますが、以下はそのファイルのロードに失敗します。
var workbook = excelApp.Workbooks.Open(ExcelDocumentLocation, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 、Missing.Value、Missing.Value、Missing.Value、Missing.Value);
エクセルでファイルを開くと「ファイルは別のユーザーによってロックされています」というメッセージが表示され、問題としてファイルがロックされていることを確認しました。