2017-02-23 71 views
0

Использования NPOI так:NPOI: XLSX с не пустыми ячейками читать, как только имея нулевые строки

static void xlsx() 
    { 
     XSSFWorkbook xsswb; 
     using (FileStream file = new FileStream(@"test.xlsx", FileMode.Open, FileAccess.Read)) 
     { 
      xsswb = new XSSFWorkbook(file); 
     } 

     ISheet sheet = xsswb.GetSheet("SheetOne"); 
     for (int row = 0; row <= 200; row++) 
     { 
      if (sheet.GetRow(row) != null) //null is when the row only contains empty cells 
      { 
       for (var cell = 0; cell < 11; cell++) 
       { 
        var cellvalue = sheet.GetRow(row).GetCell(cell); 
        if (cellvalue != null) 
        { 

         Console.WriteLine(string.Format("Row {0} {1} = {2}", row, cell, cellvalue.ToString())); 
        } 
        else 
        { 
         Console.WriteLine("null"); 
        } 
       } 

      } 
     } 
    } 

на конкретную непустую книге, у меня нет результата, написанного на консоли: каждый строки возвращаемых нуля.

Если я создаю новый xlsx, залейте его и откройте его с помощью этого кода, все будет хорошо работать. Другие xlsx хорошо открываются. Проблема должна быть в определенном формате xlsx, который я должен импортировать. (Я не могу поделиться им здесь, так как он содержит зарезервированную информацию)

Если я открою файл test.xslx с помощью файла Excel, Save As, xlsx, приведенный выше код будет работать хорошо. (Размер файла растет от 37Kb до 69Kb)

Если переименовать test.xlsx в test.xls и использовать HSSFWorkbook, NPOI правильно жалуется, что файл действительно 2007+ первенствует файл и что я должен использовать вместо XSSFWorkBook ,

Я не могу изменить исходный файл excel, так как он создается инструментом, и мои пользователи должны использовать его без каких-либо изменений.

Любые идеи? Спасибо.

+0

Имеет ли в книге, что у вас возникли проблемы с фактическим листом под названием «SheetOne»? Если оно имеет другое имя, например. «Sheet1», тогда ваш цикл не будет запущен. –

+0

@BrianRogers Фактически он генерирует исключение в 'sheet.GetRow (row)', поскольку лист имеет значение null. – krlzlx

+0

@pomarc Ваш код должен работать. Что вы подразумеваете под _ «в конкретной не пустой книге» _? В чем разница между созданным вами файлом excel и исходным преимуществом, созданным инструментом, о котором вы говорите? – krlzlx

ответ

0

Я не мог найти способ прочитать эти смешные отличия с NPOI. Вместо этого я использовал epplus.

Смежные вопросы