Как написать в открытую электронную таблицу excel с помощью epplus?
У меня есть ASP.Net сайт веб-форм, где пользователь может записывать значения в электронную таблицу Excel. Я смог разрешить пользователям открывать копию электронной таблицы, сохраненной на сервере, и открывать ее в Excel (все пользователи имеют доступ к Excel). Я смог заставить пользователя писать в файл сразу же, как только он откроет его с помощью кнопки. Проблема в том, что пользователь не может записать файл после его открытия. Я добавил немного кода ниже, чтобы проиллюстрировать свою проблему.
Рабочий код:
protected void openExcel(object sender, EventArgs e) { string xlsxpath = Server.MapPath("~/new_takeoff.xlsx"); fi = new FileInfo(Server.MapPath("~/new_takeoff.xlsx")); excelPackage = new ExcelPackage(fi); first = excelPackage.Workbook.Worksheets[1]; ExcelRange chosen = first.SelectedRange; first.Cells["I54"].Value = 51; excelPackage.Save(); System.Diagnostics.Process.Start(xlsxpath); }
Как вы можете видеть, я позаботился о написании и открытии в том же методе (обрабатывается экземпляром кнопки OnClick).
Эти отдельные методы (обрабатываемые отдельными кнопками) не работают:
protected void openExcel(object sender, EventArgs e) { string xlsxpath = Server.MapPath("~/new_takeoff.xlsx"); System.Diagnostics.Process.Start(xlsxpath); } protected void updateIT(object sender, EventArgs e) { fi = new FileInfo(Server.MapPath("~/new_takeoff.xlsx")); excelPackage = new ExcelPackage(fi); first = excelPackage.Workbook.Worksheets[1]; ExcelRange chosen = first.SelectedRange; first.Cells["I54"].Value = 51; excelPackage.Save(); }
Отладчик говорит мне, что файл не может быть доступен, потому что он используется другим процессом.
Кстати, мне нужно, чтобы файл был открыт, потому что пользователь должен выбрать, какую ячейку заполнить. Код C#, стоящий за ним, подбирает выбранный ExcelRange с помощью SelectedRange в библиотеке EPPlus.
Что я уже пробовал:
Я попробовал использовать Microsoft.Офис.Взаимодействие.Excel dll, но, конечно, это не работает для веб-сайта.