NPOI Вставить/добавить значение в файл .xls

У меня проблема с добавлением данных в существующий файл excel.

Вот код:

HSSFWorkbook hssfwb;
FileStream file1 = new FileStream(pathDoXls, FileMode.Open, FileAccess.Read);
hssfwb = new HSSFWorkbook(file1);

ISheet sheet = hssfwb.GetSheet("Zawodnicy");
int ostatniWiersz = sheet.LastRowNum;
textBox14.Text = (ostatniWiersz+1).ToString();
Console.WriteLine(ostatniWiersz);

ICell cell = sheet.CreateRow(ostatniWiersz+1).CreateCell(0);
cell.SetCellValue(textBox14.Text);

ICell cell1 = sheet.CreateRow(ostatniWiersz + 1).CreateCell(1);
cell1.SetCellValue(textBox2.Text);

//sheet.CreateRow(ostatniWiersz + 1).CreateCell(1).SetCellValue(textBox2.Text);
//sheet.CreateRow(ostatniWiersz + 1).CreateCell(2).SetCellValue(textBox3.Text);

FileStream file = new FileStream(pathDoXls, FileMode.Create);
hssfwb.Write(file);
file.Close();

Теоретически эта часть кода:

ICell cell = sheet.CreateRow(ostatniWiersz+1).CreateCell(0);
cell.SetCellValue(textBox14.Text);

ICell cell1 = sheet.CreateRow(ostatniWiersz + 1).CreateCell(1);
cell1.SetCellValue(textBox2.Text);

Следует создать ячейку в позиции последней строки, я имею в виду:

ostatniWiersz=10

поэтому в строке 11 и ячейке 0 должно быть содержимое textBox14, в ячейке 1 строки 1 должно быть содержимое textBox2.

Но когда я компилирую этот код, у меня есть значение только в ячейке 1 строки 11. Теоретически значение должно быть вставлено в оба поля (я имею в виду ячейки 0 и 1)

Спасибо за помощь.


person Przemon    schedule 01.05.2017    source источник


Ответы (1)


Вы перезаписываете одну и ту же строку, поэтому эффект кода ниже потерян

ICell cell = sheet.CreateRow(ostatniWiersz+1).CreateCell(0);
cell.SetCellValue(textBox14.Text);

Попробуйте использовать приведенный ниже код.

    HSSFWorkbook hssfwb;
    FileStream file1 = new FileStream(pathDoXls, FileMode.Open, FileAccess.Read);
    hssfwb = new HSSFWorkbook(file1);

    ISheet sheet = hssfwb.GetSheet("Zawodnicy");
    int ostatniWiersz = sheet.LastRowNum;
    textBox14.Text = (ostatniWiersz + 1).ToString();
    Console.WriteLine(ostatniWiersz);

    IRow worksheetRow = sheet.CreateRow(ostatniWiersz + 1);

    ICell cell = worksheetRow.CreateCell(0);
    cell.SetCellValue(textBox14.Text);

    ICell cell1 = worksheetRow.CreateCell(1);
    cell1.SetCellValue(textBox2.Text);

    //sheet.CreateRow(ostatniWiersz + 1).CreateCell(1).SetCellValue(textBox2.Text);
    //sheet.CreateRow(ostatniWiersz + 1).CreateCell(2).SetCellValue(textBox3.Text);

    FileStream file = new FileStream(pathDoXls, FileMode.Create);
    hssfwb.Write(file);
    file.Close();

Надеюсь, это решит вашу проблему.

person DevMJ    schedule 03.05.2017
comment
Спасибо большое работает!!!! Но ячейка ICell = sheet.CreateRow(ostatniWiersz + 1).CreateCell(0); ячейка.SetCellValue (textBox14.Text); ICell cell1 = лист.CreateRow(ostatniWiersz + 1).CreateCell(1); ячейка1.SetCellValue(textBox2.Text); эта часть кода должна быть удалена - person Przemon; 03.05.2017
comment
Я обновил ответ и удалил ненужный код. - person DevMJ; 04.05.2017