Обновление значения ячейки нарушает стиль строки. НКОИ, C# - PullRequest
0 голосов
/ 21 февраля 2020

Добрый вечер, недавно я пытался обновить значение ячейки в файле .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();
                }

1 Ответ

0 голосов
/ 24 марта 2020

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

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

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

...