Обновление значения ячейки нарушает стиль строки. НПОИ, С#

Добрый вечер, недавно я пытался обновить значение ячейки в файле .xls, используя библиотеку NPOI (C#), но когда я делаю это с помощью cell.SetCellValue("anyvalue");,

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

Пытался сохранить стиль ячейки и переписать его, используя cell.CellStyle, но все равно.

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

Используя тот код, где nameAndValues[0] содержит имя ячейки, а nameAndValues[1] содержит ее значение.

using (FileStream rstr = new FileStream(currentPath + $"/{excelName}", FileMode.Open, FileAccess.Read))
                {
                    var workbook = new HSSFWorkbook(rstr);
                    var sheet = workbook.GetSheetAt(0);
                    using (FileStream wstr = new FileStream(currentPath + $"/{excelName}", FileMode.Open, FileAccess.Write))
                    {
                        for (int i = 0; i < values.Count; i++)
                        {
                            var cr = new CellReference(namesAndValue[i, 0]);
                            var row = sheet.CreateRow(cr.Row);
                            var cell = row.CreateCell(cr.Col);
                            cell.SetCellValue(namesAndValue[i, 1]);

                        }
                        workbook.Write(wstr);
                        wstr.Close();
                    }
                    rstr.Close();
                }

person DarkTwister    schedule 21.02.2020    source источник
comment
Пробовал менять FileMode и FileAccess, но ничего не получилось :(   -  person DarkTwister    schedule 22.02.2020


Ответы (1)


Когда вы вызываете sheet.CreateRow(0), первая строка листа будет стерта, а пустая строка будет вставлена ​​без стиля. То же самое и с row.CreateCell().

Таким образом, вы вызываете CreateRow снова и снова, сохраняя только последнее значение строки.

Я думаю, что это может быть проблемой.

person Jason Wong    schedule 24.03.2020