Почему в Microsoft Excel по-прежнему существует ограничение на количество строк?[закрыто]

StackOverflow https://stackoverflow.com/questions/526921

  •  22-08-2019
  •  | 
  •  

Вопрос

До Office 2007 в Excel было максимум 65 000 строк.Office 2007 увеличил этот объем максимум до 1 миллиона строк, что, конечно, приятнее;но мне любопытно - почему вообще существует ограничение?Очевидно, что производительность будет снижаться экспоненциально по мере увеличения размера электронной таблицы;но для этого не должно быть очень сложно оптимизировать Excel, начав с небольшого листа и динамически "изменяя размер" его только по мере необходимости.Учитывая, сколько труда, должно быть, потребовалось, чтобы увеличить лимит с 65 тысяч до 1 миллиона, почему они не пошли до конца, чтобы он был ограничен только объемом доступной памяти и дискового пространства?

Это было полезно?

Решение

(обновлено из-за ошибки...Предложение для всех:не размещайте посты на SO до того, как вы полностью проснетесь)

Вероятно, из-за оптимизации.Excel 2007 может содержать максимум 16 384 столбца и 1 048 576 строк.Странные цифры?

14 бит = 16 384, 20 бит = 1 048 576

14 + 20 = 34 бита = может храниться более одного 32-битного регистра.

Но им также необходимо сохранить формат ячейки (текст, число и т.д.) и форматирование (цвета, границы и т.д.).Предполагая, что они используют два 32-разрядных слова (64 бита), они используют 34 бита для номера ячейки и имеют 30 бит для других вещей.

Почему это так важно?В памяти им не нужно выделять всю память, необходимую для всей электронной таблицы, а только ту, которая необходима для ваших данных, и все данные помечаются тем, в какой ячейке они должны находиться.

Обновление 2016:

Нашел ссылку на Спецификация Microsoft для Excel 2013 и 2016

  • Открытые рабочие книги:Ограничено доступной памятью и системными ресурсами
  • Размер рабочего листа:1 048 576 строк (20 бит) по 16 384 столбцам (14 бит)
  • Ширина столбца:255 символов (8 бит)
  • Высота ряда:409 баллов
  • Разрывы страниц:1,026 по горизонтали и вертикали (неожиданное число, вероятно, неправильное, 10 бит равно 1024)
  • Общее количество символов, которые может содержать ячейка:32 767 символов (16 бит со знаком)
  • Символы в верхнем или колонтитуле:255 (8 бит)
  • Листы в рабочей книге:Ограничено доступной памятью (по умолчанию - 1 лист)
  • Цвета в рабочей тетради:16 миллионов цветов (32 бита с полным доступом к 24-битному цветовому спектру)
  • Именованные представления в рабочей книге:Ограничено доступной памятью
  • Уникальные форматы ячеек / стили ячеек:64 000 (16 бит = 65536)
  • Стили заливки:256 (8 бит)
  • Вес линии и стили:256 (8 бит)
  • Уникальные типы шрифтов:доступно для использования 1,024 (10 бит) глобальных шрифта;512 на рабочую тетрадь
  • Форматы чисел в рабочей книге:От 200 до 250, в зависимости от установленной языковой версии Excel
  • Имена в рабочей книге:Ограничено доступной памятью
  • Окна в рабочей книге:Ограничено доступной памятью
  • Гиперссылки на рабочем листе:66 530 гиперссылок (неожиданное число, вероятно, неверное.16 бит = 65536)
  • Стекла в окне:4
  • Связанные листы:Ограничено доступной памятью
  • Сценарии:Ограничено доступной памятью;в сводном отчете показан только первый 251 сценарий
  • Изменение ячеек в сценарии:32
  • Регулируемые ячейки в Решателе:200
  • Пользовательские функции:Ограничено доступной памятью
  • Диапазон масштабирования:от 10 до 400 процентов
  • Отчеты:Ограничено доступной памятью
  • Сортировка ссылок:64 в одном виде;неограниченно при использовании последовательных сортировок
  • Уровни отмены:100
  • Поля в форме данных:32
  • Параметры рабочей книги:255 параметров в рабочей книге
  • Элементы, отображаемые в раскрывающихся списках фильтров:10,000

Другие советы

Одним словом - скорость.Индекс, содержащий до миллиона строк, умещается в 32-разрядном word, поэтому его можно эффективно использовать на 32-разрядных процессорах.Аргументы функции, которые помещаются в регистр процессора, чрезвычайно эффективны, в то время как аргументы большего размера требуют доступа к памяти при каждом вызове функции, что является гораздо более медленной операцией.Обновление электронной таблицы может быть трудоемкой операцией, включающей множество ссылок на ячейки, поэтому важна скорость.Кроме того, команда Excel ожидает, что любой, кто имеет дело с более чем миллионом строк, будет использовать базу данных, а не электронную таблицу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top