Очистка ячеек в заданном диапазоне с помощью C#

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18
70 xlsx таблиц в которых нужо постоянно очищать заднный диазон ячеек.
Примерно так:
var table = project.Tables["1"];
string startCellReference = "F7";
string endCellReference = "F406";
string startCellReference = "G7";
string endCellReference = "G406";
string startCellReference = "H7";
string endCellReference = "H406";

Я пробывал написать код но при запуске cкрипата вилазит ошибка
"Invalid token 'return' in class, struct, or interface member declaration"
Помогите плиз с кодом
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 130
Благодарностей
486
Баллы
83
Если не подходит tb.DeleteColumn(5); , который удаляет полностью столбец, то можно попробовать другой альтернативный вариант. На реальной таблице не проверял.
В общий код пихаем это:
C#:
public class Ranges
{
    public string Collumn {get;set;} = string.Empty;
    public int StartRow {get;set;} = 0;
    public int EndRow {get;set;} = 0;
}
В то время, в кубике пишем это:
C#:
var tb = project.Tables["tb"];

var ranges = new List<Ranges>()
{
    new Ranges{
        Collumn = "F",
        StartRow = 7,
        EndRow = 406
    },
    new Ranges{
        Collumn = "H",
        StartRow = 7,
        EndRow = 406
    },
    new Ranges{
        Collumn = "G",
        StartRow = 7,
        EndRow = 406
    }
};

foreach (var range in ranges)
{
    for (int i = range.StartRow; i <= range.EndRow; i++)
    {
        tb.SetCell(range.Collumn, i, "");
        //project.SendInfoToLog($"Clear {range.Collumn}{i}");
    }
}
Строку вывода в лог можно раскомментировать и посмотреть на то, какие ячейки обрабатываются.
Наверняка, есть болееизящный подход, который обработал бы на входе строку "F7:G406", но, честно сказать, выдумывать его не сильно хочется. Надеюсь, вам поможет!
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18
Если не подходит tb.DeleteColumn(5); , который удаляет полностью столбец, то можно попробовать другой альтернативный вариант. На реальной таблице не проверял.
В общий код пихаем это:
C#:
public class Ranges
{
    public string Collumn {get;set;} = string.Empty;
    public int StartRow {get;set;} = 0;
    public int EndRow {get;set;} = 0;
}
В то время, в кубике пишем это:
C#:
var tb = project.Tables["tb"];

var ranges = new List<Ranges>()
{
    new Ranges{
        Collumn = "F",
        StartRow = 7,
        EndRow = 406
    },
    new Ranges{
        Collumn = "H",
        StartRow = 7,
        EndRow = 406
    },
    new Ranges{
        Collumn = "G",
        StartRow = 7,
        EndRow = 406
    }
};

foreach (var range in ranges)
{
    for (int i = range.StartRow; i <= range.EndRow; i++)
    {
        tb.SetCell(range.Collumn, i, "");
        //project.SendInfoToLog($"Clear {range.Collumn}{i}");
    }
}
Строку вывода в лог можно раскомментировать и посмотреть на то, какие ячейки обрабатываются.
Наверняка, есть болееизящный подход, который обработал бы на входе строку "F7:G406", но, честно сказать, выдумывать его не сильно хочется. Надеюсь, вам поможет!
Ошибка - CS1022 но по скробкам вроде все ок
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 130
Благодарностей
486
Баллы
83

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18
Скриншот отправьте ошибки и покажите свой код. Код не скриншотом, а текстом.
Компиляция кода Ошибка в действии "CS1022" "Type or namespace definition, or end-of-file expected". [Строка: 34; Cтолбец: 1]
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 130
Благодарностей
486
Баллы
83
Компиляция кода Ошибка в действии "CS1022" "Type or namespace definition, or end-of-file expected". [Строка: 34; Cтолбец: 1]
Код, который я отправил выше, точно работает. Либо, пожалуйста, отправьте все, о чем я вас попросил (+ к тому, что просил выше, скриншот или текст из общего кода), либо разбирайтесь сами.
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18
Код, который я отправил выше, точно работает. Либо, пожалуйста, отправьте все, о чем я вас попросил (+ к тому, что просил выше, скриншот или текст из общего кода), либо разбирайтесь сами.

116530

116527



var tb = project.Tables["tb"];

var ranges = new List<Ranges>()
{
new Ranges{
Collumn = "F",
StartRow = 7,
EndRow = 406
},
new Ranges{
Collumn = "H",
StartRow = 7,
EndRow = 406
},
new Ranges{
Collumn = "G",
StartRow = 7,
EndRow = 406
}
};

foreach (var range in ranges)
{
for (int i = range.StartRow; i <= range.EndRow; i++)
{
tb.SetCell(range.Collumn, i, "");
//project.SendInfoToLog($"Clear {range.Collumn}{i}");
}
}
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 130
Благодарностей
486
Баллы
83
Посмотреть вложение 116530
Посмотреть вложение 116527


var tb = project.Tables["tb"];

var ranges = new List<Ranges>()
{
new Ranges{
Collumn = "F",
StartRow = 7,
EndRow = 406
},
new Ranges{
Collumn = "H",
StartRow = 7,
EndRow = 406
},
new Ranges{
Collumn = "G",
StartRow = 7,
EndRow = 406
}
};

foreach (var range in ranges)
{
for (int i = range.StartRow; i <= range.EndRow; i++)
{
tb.SetCell(range.Collumn, i, "");
//project.SendInfoToLog($"Clear {range.Collumn}{i}");
}
}
В общем коде нет определения класса Ranges.
116553
 

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18

Ахилес

Client
Регистрация
11.11.2020
Сообщения
870
Благодарностей
355
Баллы
63

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 130
Благодарностей
486
Баллы
83
То есть, не получится очистить содержимое ячеек с помощью C#?
Если Вы планируете пользоваться C# кодом, то стоит понять хотя бы небольшие основы. Чтобы ваш код заработал, вам надо:
1. Добавить использование using и общего кода:
116569


2. Вставить в него код класса, который мы используем в коде:
116570


Сам код для общего кода:
    public class Ranges
    {
        public string Collumn {get;set;} = string.Empty;
        public int StartRow {get;set;} = 0;
        public int EndRow {get;set;} = 0;
    }
3. Попробовать запустить. Должно заработать.
 
  • Спасибо
Реакции: noble

noble

Пользователь
Регистрация
09.10.2014
Сообщения
171
Благодарностей
10
Баллы
18
Спс, я не знал про общий код...., буду разбираться
 

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