Как Преобразовать Массив в Один Столбец Excel • Дополнительные сведения

Как преобразовать номер столбца (например, 127) в столбец Excel (например, AA)

Как преобразовать числовое число в имя столбца Excel в С#, не используя автоматизацию, получая значение непосредственно из Excel.

Excel 2007 имеет возможный диапазон от 1 до 16384, который представляет собой количество поддерживаемых столбцов. Результирующие значения должны быть в виде имен столбцов excel, например. A, AA, AAA и т.д.

Не забывая, что есть ограничения на количество доступных столбцов. Например, * Excel 2003 (v11) имеет размер IV, 2 ^ 8 или 256 столбцов). * Excel 2007 (v12) имеет размер столбца XFD, 2 ^ 14 или 16384.

Обратите внимание, что пределы строк и столбцов зависят больше от формата файла, чем версия Excel, и могут быть разными для каждой книги. Они могут измениться даже для одной и той же книги, если она сохранена в старом или новом формате.

45 ответов

Этот код работает хорошо. Предполагается, что столбец A — это columnNumber 1. Мне нужно было быстро изменить учетную запись моей системы, используя столбец A в качестве columnNumber 0. Я изменил строку int divndnd на intdivnd = columnNumber + 1; Кит

Возможно, вы могли бы сделать это немного быстрее, удалив конкатенации строк и используя StringBuilder. Я работаю с OpenXML, поэтому мне нужно все, что я могу набрать. +1 хотя, это правильно.

@Jduv только что попробовал, используя StringBuilder . Это занимает примерно вдвое больше времени. Это очень короткая строка (не более 3 символов — Excel 2010 переходит в столбец XFD), поэтому максимум 2 конкатенации строк. (Я использовал 100 итераций перевода целых чисел от 1 до 16384, т.е. столбцов Excel от A до XFD, в качестве теста).

@Graham Я только что попробовал StringBuilder — он примерно на 1,2 медленнее, чем конкатенация строк (не 2 раза). Но все равно медленнее, чем строка.

Почему вы используете ДРУГУЮ переменную (дивиденд), размещенную в стеке? Используйте сам параметр (columnNumber) . Он не является ни ссылкой, ни указателем, поэтому использовать его совершенно безопасно — и он так же быстр, как и другая локальная переменная. PS: параметры являются локальными переменными .

Хотя я опаздываю к игре, код далеко не оптимален. В частности, вам не нужно использовать modulo , вызывать ToString() и apply (int) cast. Учитывая, что в большинстве случаев в мире C # вы начинаете нумерацию с 0, вот моя ревизия: открытая статическая строка GetColumnName (int index) // на основе нуля while (index> = 0); вернуть имя; >

@HermanKan, как мне изменить его так, чтобы он не начинался с нуля. Столбцы Excel не начинаются с нуля, они начинаются с 1. В противном случае это бесполезно.

Я не знаю, как он выбран в качестве правильного ответа. Поскольку для меня это не подходит для базового теста: он дает AZ, когда я сдаю 26. Правильный ответ будет Z. Пожалуйста, исправьте меня, если я что-то упустил.

Привет @ Грэм, это так? Я скопировал этот фрагмент и выполнил без каких-либо изменений в C #, но я не получил Z в качестве ответа, когда дал ввод 26. Это как-то связано с языком?

Привет @ Билл, я забыл ответить снова. Фрагмент, показанный здесь, действительно работал для меня. Я сделал некоторую ошибку при копировании. Дайте мне знать, если у вас возникнут какие-либо проблемы.

Если кому-то нужно сделать это в Excel без VBA, вот как это сделать:

Да, я использую Excel в локали, где; используется вместо, для разделения аргументов функции в Excel. Спасибо за указание на это.

@dayuloli Давно, с тех пор, как этот ответ был написан, вы правы, функция TEXT здесь не служит цели. Обновлю ответ.

Извините, это Python вместо С#, но, по крайней мере, результаты верны:

Я обнаружил ошибку в своем первом сообщении, поэтому решил сесть и сделать математику. Я обнаружил, что числовая система, используемая для идентификации столбцов Excel, не является базой 26, как другой человек. Рассмотрим следующее в базе 10. Вы также можете сделать это с буквами алфавита.

Пространство. S1, S2, S3: S1, S2, S3
. 0, 00, 000. A, AA, AAA . 1, 01, 001. B, AB, AAB . . 9, 99, 999. Z, ZZ, ZZZ Всего состояний в космосе: 10, 100, 1000: 26, 676, 17576
Всего государств. 1110. 18278

Таблицы Excel номеров в отдельных алфавитных пространствах с использованием базы 26. Вы можете видеть, что в общем случае прогрессия состояния пространства a, a ^ 2, a ^ 3. для некоторой базы a, а общее число состояний a + a ^ 2 + a ^ 3 +.

Да, очень хорошее объяснение. Но не могли бы вы также заявить, что это не база 27? Ваше объяснение показывает это при изучении, но быстрое упоминание вверху может спасти несколько других людей.

эксперт
Мнение эксперта
Михаил Соловьев, консультант по вопросам работы с продуктами Microsoft
Если у вас возникнут сложности, я помогу разобраться!
Задать вопрос эксперту
Если вы хотите быстро поворачивать данные, чтобы просмотреть их в разных угловых обозначениях, попробуйте создать сводную таблицу для быстрой группировки данных путем перетаскивания полей из области строки в область столбцы или наоборот в списке полей сводной таблицы. Если же вы хотите что-то уточнить, обращайтесь ко мне!
Как вы правильно догадались, чтобы преобразовать данные в excel из строки в столбец нужно проделать аналогичные операции, что и при преобразовании столбца в строку. Можно воспользоваться как специальной вставкой, так и функцией ТРАНСП.
Как Преобразовать Массив в Один Столбец Excel • Дополнительные сведения

Как преобразовать много столбцов в один столбец в excel, но сохранить 1-ю ячейку каждого столбца и повторить ее в новых строках? CodeRoad

Когда возникает вопрос преобразования в excel столбца в строку, то имеется ввиду перемещение данных находящихся в столбце в строку. Или так называемое транспонирование. Весьма распространенная ситуация при перекладке данных из одного формата в другой.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector