Как добраться, последнее чтение индекса столбца превосходят файл?

Как я получаю индекс последнего столбца при чтении a xlsx файл с помощью ПОИ Apache API?

Существует a getLastRowNum метод, но я ничто не могу найти связанным с числом столбцов...


Править: Я имею дело с XLSX файлы

13
задан Gagravarr 28 July 2015 в 21:51
поделиться

1 ответ

Если алгоритм уже ограничен/жестко закодирован с использованием только std:: vector:: iterator и std:: vector:: iterator , не имеет значения, какой метод вы в конечном итоге будете использовать. Ваш алгоритм уже конкретизирован за пределами точки, где выбор одного из других может иметь какое-либо значение. Они оба делают одно и то же. Это просто вопрос личного предпочтения. Я бы лично использовал явное вычитание.

Если, с другой стороны, вы хотите сохранить более высокую степень общности в вашем алгоритме, а именно, чтобы допустить возможность того, что в будущем он может быть применен к какому-то другому типу итератора, то лучший метод зависит от вашего намерения. Это зависит от того, насколько ограничительным будет тип итератора, который можно использовать здесь.

  • Если используется явное вычитание, алгоритм будет ограничен довольно узким классом итераторов: итераторов произвольного доступа. (Это то, что вы получаете теперь от std:: vector )

  • Если вы используете distance , ваш алгоритм будет поддерживать гораздо более широкий класс итераторов: итераторы ввода.

Конечно, вычисление расстояния для неслучайных итераторов является в общем случае неэффективной операцией (в то время как для случайных итераторов это так же эффективно, как и вычитание). Вы должны решить, имеет ли ваш алгоритм смысл для неслучайных итераторов, с точки зрения эффективности. Это результат потери в эффективности разрушительно до точки сделать ваш алгоритм совершенно бесполезным, то вы должны лучше придерживаться вычитания, таким образом, запрещая неэффективное использование и заставляя пользователя искать альтернативные решения для других типов итераторов. Если эффективность с неслучайными итераторами всё ещё находится в пригодном для использования диапазоне, то следует использовать расстояние и документально зафиксировать тот факт, что алгоритм лучше работает с случайными итераторами.

-121--1811011-

Да. Это стандартная практика.

В Effective Java, 2nd Ed. это охватывается пунктом 61 «Создать исключения, соответствующие абстракции». В пункте 58 «Использование проверенных исключений для условий восстановления и исключений во время выполнения для ошибок программирования» также рассматривается вопрос о том, проверяется ли результирующая исключительная ситуация или нет.

То, что это конструктор, а не обычный метод, на самом деле не является проблемой. (На самом деле, конструкторы, возможно, имеют больше свободы, поскольку они не связаны интерфейсом super.)

При создании исключения в результате другого исключения рекомендуется убедиться, что вы настройками причину в новом исключении.

-121--2265247-

Я думаю, что вам придется выполнить итерацию по строкам и проверить HSSFRow.getLastCellNum () на каждой из них.

25
ответ дан 1 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: