![]() |
Получение массива ячеек для объединения
Чего то голова не варит уже...
Имеем экземпляр MS Excel. Открыли его, все работает(C#, WinForm). После некоторых операций получаю на выходе некий набор записей, который необходимо выгрузить в Excel. Так вот там есть строки, которые необходимо вставить отдельно на строку и выполнить слияние ячеек по горизонтали. Проблема в том, что количество столбцов для слияния известно, но я не нашел, как это количество подсунуть в функцию get_range объекта Excel._WorkSheet. Можно сделать так: Код:
//Делаем жирным заголовок А если мне необходимо выделить 5 ячеек, то я могу написать так: Код:
oSheet.get_Range("A1", "F1").Merge(false); Есть какие нибудь идеи, как можно обмануть get_range в C# ? |
пример из хелпа:
Код:
Range("A1:H8").Formula = "=rand()" 'Range is on the active sheet соответсвенно: Код:
string str; |
Я выкрутился немного другим способом, но зато теперь могу не указывать буквы, а просто номера ячеек (строка, столбец):
Код:
oSheet.get_Range(oSheet.Cells[RowIndex, ColumnIndex], oSheet.Cells[RowIndex2, ColumnIndex2]).Merge(false); |
Цитата:
Ты предполагаешь, что нумерация столбцов в экселе является числовой по основанию 26 с цифрами ABC....Z. Это не так. В любой системе счисления есть цифра 0, ведущие нули игнорируются. А в excel столбцы A, AA, AAA - совершенно разные столбцы... Получается, что система счисления по основанию 27, но нули в ней не используются. Изящного алгоритма для перевода номера столбца в буквенное представление я придумать не смог... Код:
sub rc2a1($){ |
sergvg, Согласен конечно что не совсем 26-чная, но и не 27 ;) вот код, ИМХО изящней (потому что цикл):
Код:
string rc2a1(int my_str_number) |
pva, Ты тестируешь свой код ? Первая колонка - число, вторая - результат моей ф-и, третья - твоей...
Код:
1 A A Цитата:
|
Окончательный код циклом...
Код:
sub rc2a1($){ |
Спасибо, парни, за такой интерес к моему вопросу :) Вопрос решен :)
|
Извини Delirium, уже дело принципа :)
Спасибо sergvg, что проверил код. Я что-то расслабился совсем. Я исхожу из принципа, что эта буквенная система представляет собой искажённую 26-чную систему исчисления, но со старшим разрядом из 27 символов. Таким образом, в 4-значное число максимально может иметь значение 27*26*26*26 - 1. (Это не противоречит тому, что 27-разрядное с неиспользуемыми нулями, но меняет логику поиска алгоритма) Протестировал, вроде сходится Код:
string rc2a1(int my_str_number) Код:
string rc2a1(unsigned a) |
Delirium, я для себя старался, мне нужно генерировать данные в эксель, использую Perl и Win32::OLE. Так там надо указывать диапазон ячеек в A1-стиле. В общем, задача схожая с твоей :).
pva, первый код не проверял, но во втором, кажись, надо вычесть единицу из аргумента... Код:
sub rc2a1_pva($){ |
Цитата:
|
Время: 01:03. |
Время: 01:03.
© OSzone.net 2001-