C# добавить/удалить строку в excel в заданном диапазоне?

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Пмогите плиз с кодом C# который будет добавлять строку в excel после 35 строки
А так же кодом который будет удалять 36 строку. Это разные действия для разных циклов
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Это два последовательных действия: сначала добавляет 35 строку, потом сразу удаляет 36ю?
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Это два последовательных действия: сначала добавляет 35 строку, потом сразу удаляет 36ю?
Нет, они не последовательные.
Если бы это было так, как вы описали, то проще было бы очистить - простая опирация, которую я смог бы реализовать через типовые экшены.
 

xASZx

Client
Регистрация
24.11.2017
Сообщения
70
Благодарностей
15
Баллы
8
Если правильно понял)
C#:
var t = project.Tables["t"];
t.SetCell("A", 36, "1");
t.SetCell("B", 36, "2");
t.SetCell("C", 36, "3");
t.SetCell("D", 36, "4");


t.DeleteRow(36);
 
  • Спасибо
Реакции: noble

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Велосипедный способ:
перед использованием сделать резервную копию екселевского файла.


Вставка строки в таблицу:
var zt_orig = project.Tables["t1"];

lock (FileSyncObjects.TableSyncer)
{
    List<List<string>> orig = new List<List<string>>
    {
    };

    //Копировать оригинал
    for (int i = 0; i < zt_orig.RowCount; i++)
    {
        orig.Add(zt_orig.GetRow(i).ToList());
    }

    //Чистим исходную таблицу
    zt_orig.Clear();
    //Номер строки после которой вставлять
    int insert_after = 35;
    for (int i = 0; i < orig.Count; i++)
    {
        if (i == insert_after + 1)
            zt_orig.AddRow(new string[]
            {
                "новая строка", "новая ячейка"
            });
        zt_orig.AddRow(orig[i]);
    };
}
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Если правильно понял)
C#:
var t = project.Tables["t"];
t.SetCell("A", 36, "1");
t.SetCell("B", 36, "2");
t.SetCell("C", 36, "3");
t.SetCell("D", 36, "4");


t.DeleteRow(36);
не создает новы строку а зполнялет чейки в 36 строке
117239
 

noble

Пользователь
Регистрация
09.10.2014
Сообщения
177
Благодарностей
10
Баллы
18
Велосипедный способ:
перед использованием сделать резервную копию екселевского файла.


Вставка строки в таблицу:
var zt_orig = project.Tables["t1"];

lock (FileSyncObjects.TableSyncer)
{
    List<List<string>> orig = new List<List<string>>
    {
    };

    //Копировать оригинал
    for (int i = 0; i < zt_orig.RowCount; i++)
    {
        orig.Add(zt_orig.GetRow(i).ToList());
    }

    //Чистим исходную таблицу
    zt_orig.Clear();
    //Номер строки после которой вставлять
    int insert_after = 35;
    for (int i = 0; i < orig.Count; i++)
    {
        if (i == insert_after + 1)
            zt_orig.AddRow(new string[]
            {
                "новая строка", "новая ячейка"
            });
        zt_orig.AddRow(orig[i]);
    };
}
Сробатывает как нужно, большое справибо
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)