Использования 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, так как он создается инструментом, и мои пользователи должны использовать его без каких-либо изменений.
Любые идеи? Спасибо.
Имеет ли в книге, что у вас возникли проблемы с фактическим листом под названием «SheetOne»? Если оно имеет другое имя, например. «Sheet1», тогда ваш цикл не будет запущен. –
@BrianRogers Фактически он генерирует исключение в 'sheet.GetRow (row)', поскольку лист имеет значение null. – krlzlx
@pomarc Ваш код должен работать. Что вы подразумеваете под _ «в конкретной не пустой книге» _? В чем разница между созданным вами файлом excel и исходным преимуществом, созданным инструментом, о котором вы говорите? – krlzlx