В настоящее время я сохраняю файл excel, как на моем диске c.Самый простой способ загрузить файл в mvc
public ActionResult Export()
{
try
{
Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet worksheet = workbook.ActiveSheet;
var people = db.People.ToList();
worksheet.Cells[1, 1] = "Last Name";
worksheet.Cells[1, 2] = "First Name";
int row = 2;
foreach (var person in people)
{
worksheet.Cells[row, 1] = person.PersonFName;
worksheet.Cells[row, 2] = person.PersonLName;
row++;
}
workbook.SaveAs("c:\\test\\worksheet.xls");
workbook.Close();
Marshal.ReleaseComObject(workbook);
application.Quit();
Marshal.FinalReleaseComObject(application);
ViewBag.Result = "Done";
}
catch(Exception ex)
{
ViewBag.Result = ex.Message;
}
return File("c:\\test\\workseet.xls", "application/vnd.ms-excel", "workseet.xls");
// return View("Success");
}
Я могу пойти в c:\\test\workseet.xls
и существует там я могу делать все, что с ним ...
Я хотел превратить мой метод с возвращением вид вернуть загрузки файла ...
я понял, что это было так просто, как это:
return File("c:\\test\\workseet.xls", "application/vnd.ms-excel", "workseet.xls");
Однако, когда я делаю этот метод и нажмите на ссылку для скачивания, это дает мне эту ошибку.
The process cannot access the file 'c:\test\workseet.xls' because it is being used by another process.
Вы должны закрыть книгу первым. Вместо того, чтобы сохранять на диск, вы можете сохранить в MemoryStream и использовать 'return File (myStream, ..)', чтобы этого избежать. Вы используете EPPlus? –
Как вы создаете файл Excel? В какой библиотеке вы используете? – mason
PS 'xls' является * не * правильным типом для документов xlsx, сгенерированных любой из библиотек OpenXML, таких как EPPlus. Это старый формат до 2003 года, который больше не используется. –