#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
интерфейс