Как мне работать с открытой книгой в 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 и подчиняется тем же ограничениям.

  1. OpenXML не может открывать файлы, используемые в данный момент.
  2. OpenXML разработан так, чтобы не зависеть от Excel, установленного в системе. Так что это невозможно. Office Interop - единственный способ, или, может быть, WINAPI.
  3. Не относится к ClosedXML,
Другие вопросы по тегам