Как вставить лист в существующий документ с помощью Dev Express Office File API

#c# #devexpress

#c# #devexpress

Вопрос:

Я создаю документ xlsx после экспорта, я хочу снова открыть его и вставить рабочий лист.

мои ссылки следующие

     using DevExpress.Spreadsheet;
  

это то, что у меня было вне моего метода

       IWorkbook MyBook = null;
  

внутри моего метода у меня есть это

      using (FileStream stream = new FileStream(path, FileMode.Append, FileAccess.Write))
                    {

                        MyBook.LoadDocument(path, DocumentFormat.Xlsx);
                        MyBook.Worksheets.Insert(count, "reportExel");
                    }
  

Комментарии:

1. В чем вопрос / проблема? Вы получаете ошибки с показанным кодом?

2. Как только я добираюсь до LoadDocument, выдается исключение, в котором говорится: «Ссылка на объект никогда не была назначена экземпляру объекта».

3. Пожалуйста, отметьте, какой продукт вы используете, интерфейс IWorkbook от NPOI или SpreadsheetGear, но LoadDocument sintax больше похож на DevExpress, есть больше программных и логических ошибок, но сначала давайте определим продукт…

4. это продукт Devepress

Ответ №1:

Метод LoadDocument имеет две перегрузки: из строки и из файла, в вашем подходе вы открываете файл через stream, но отправляете stream.Имя (строка, которая получает путь к файлу), вы вызываете перегрузку из файла, это может привести к ошибке использования файла.

Если вы хотите использовать Stream

 Workbook workbook = new Workbook();

// Load a workbook from the stream. 
using (FileStream stream = new FileStream(path, FileMode.Open)) 
{
    workbook.LoadDocument(stream, DocumentFormat.Xlsx);
}

workbook.Worksheets.Insert(count, "reportExel");
  

Если вы хотите использовать File

 Workbook workbook = new Workbook();

// Load a workbook from the file. 
workbook.LoadDocument(path, DocumentFormat.Xlsx);
workbook.Worksheets.Insert(count, "reportExel");
  

PS Проблема с вашим последним обновлением IWorkbook MyBook = null; заключается в том, что когда вы пытаетесь вызвать LoadDocument из нулевой ссылки, вам необходимо присвоить значение MyBook переменной IWorkbook MyBook = new Workbook(); принимается, поскольку Workbook класс реализует IWorkbook интерфейс