Как мне работать с открытой книгой в Excel, используя ClosedXML (C#)?
Я использую ClosedXML для создания отчетов для людей в Excel. Есть 3 вопроса, с которыми я хотел бы помочь.
1) У меня есть этот код здесь, чтобы я мог получить доступ к данным из рабочей книги. Он работает правильно, за исключением случаев, когда у кого-то есть открытая книга. Мне все равно, если он открывает копию только для чтения, если это возможно, потому что все, что я делаю, это доступ к информации из нее.
var WorkbookCopyFrom = new XLWorkbook(WorksheetToCopy);
Как я могу открыть это, даже если у кого-то есть это открытое?
2) В моей предыдущей компании я использовал пакет Office Interop Nuget, чтобы сделать нечто подобное. В этом пакете я смог показать файл Excel, работая над ним, используя этот код:
excelApp.Visible = true;
Есть ли что-то похожее в ClosedXML?
2 ответа
Я наткнулся на ту же проблему. Временным решением может быть открытие FileStream вместо файла напрямую.
public void LoadDocumentReadOnly(string fn)
{
filename = fn;
fileStream = new FileStream(fn, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Document = new XLWorkbook(fileStream);
}
ClosedXML
обертка вокруг OpenXML
и подчиняется тем же ограничениям.
- OpenXML не может открывать файлы, используемые в данный момент.
- OpenXML разработан так, чтобы не зависеть от Excel, установленного в системе. Так что это невозможно. Office Interop - единственный способ, или, может быть, WINAPI.
- Не относится к
ClosedXML
,