Сообщение об ошибке при открытии файла Excel с использованием openXml в .Net? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь загрузить большой файл Excel, используя open xml.Я могу скачать его.Мой файл Excel содержит более 100 тысяч записей.Когда я дважды щелкаю по файлу, я получаю сообщение об ошибке ниже.

enter image description here

Ниже приведен мой код.

public MemoryStream WriteExcelUsingOpenXML(IEnumerable<string> headers, IEnumerable<IEnumerable<string>> values, string worksheetName)
    {
      var stream = new MemoryStream();
      var headersArray = headers.ToArray();
      using (SpreadsheetDocument document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
      {
        WorkbookPart workbookPart = document.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();

        WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet();

        Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

        Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = Constants.TimephaseWorksheet };

        sheets.Append(sheet);

        workbookPart.Workbook.Save();

        SheetData sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());

        // Constructing header
        Row row = new Row();
        foreach (var data in headersArray)
        {
          row.Append(ConstructCell(headersArray[0], CellValues.SharedString));
        }

        // Insert the header row to the Sheet Data
        sheetData.AppendChild(row);
        // Inserting each employee
        foreach (var valuesEnumeration in values)
        {
          row = new Row();
          var flattend = valuesEnumeration.ToArray();
          row.Append(
              ConstructCell(flattend[0], CellValues.Number),
              ConstructCell(flattend[1], CellValues.SharedString),
              ConstructCell(flattend[2], CellValues.SharedString),
              ConstructCell(flattend[3], CellValues.Number),
              ConstructCell(flattend[4], CellValues.SharedString));

          sheetData.AppendChild(row);
        }

        worksheetPart.Worksheet.Save();
      }

      return stream;
    }

    private Cell ConstructCell(string value, CellValues dataType)
    {
      return new Cell()
      {
        CellValue = new CellValue(value),
        DataType = new EnumValue<CellValues>(dataType)
      };
    }

Ниже приведен пример данных файла Excel.

enter image description here

Как исправить ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...