该进程无法访问文件xxx.xlsx,因为它正由另一个进程使用

时间:2016-02-24 08:05:02

标签: c# system.io.file

你好过去2天一直在努力解决这个问题,似乎无法弄清问题是什么,我已经看到了其他相关的帖子,但没有一个与我实现我的代码的方式直接相关,我没有使用Stream-reader / Writer我只是将文件复制到指定的文件夹,我在阅读文件后试图关闭文件阅读器,但这也没有帮助,我没有想法,任何人都可以请指导我对此代码或建议另一种有效的方法来实现这一点。该文件绝不会在其他位置打开。

public ActionResult Upload(HttpPostedFileBase file)
{
    List<CleanSupplierClaim> supplierClaimsData = new List<CleanSupplierClaim>();

    try
    {
        if (file.ContentLength > 0)
        {
            if (file.FileName.EndsWith("xls") || file.FileName.EndsWith("xlsx")) ;

            string path = AppDomain.CurrentDomain.BaseDirectory 
                            + "upload\\" + file.FileName;

            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }

            file.SaveAs(path);

            Excel.Application application = new Excel.Application();
            Excel.Workbook workbook = application.Workbooks.Open(path);
            Excel.Worksheet worksheet = workbook.ActiveSheet;
            Excel.Range range = worksheet.UsedRange;

2 个答案:

答案 0 :(得分:0)

您正在打开Excel的实例,但您永远不会关闭它。这不是自动完成的!您需要显式关闭Excel实例。否则,该过程将在后台停留,您的文件将被锁定。

答案 1 :(得分:-2)

这对我有用

MailMessage Mail= new MailMessage();
Mail.Attachments.Add(new Attachment(filePath, "application/vnd.ms-excel"));
Mail.Attachments.Dispose();