Excel - Как игнорировать строки с формулами, которые равняются ничему? - PullRequest
1 голос
/ 28 сентября 2010

Я работаю с Microsft Office Interop API.Мой вопрос относится к Excel.

Я написал программу, используя Interop API для форматирования документов Excel, а затем отправил их на принтер.Проблема, однако, в том, что мы иногда сталкиваемся с файлами, в которых люди создали столбец, который охватывает более 65 000 строк, и в нем содержится только формула.Формула создает выходные данные только для первых приблизительно 100 строк, а затем остальные остаются пустыми.Но при отправке на принтер он пытается напечатать примерно 10000 страниц или что-то еще из-за этих формул.

Сначала я искал способы заставить Excel просто не печатать эти диапазоны.Я не мог найти настройки, чтобы игнорировать их.Во-вторых, я подумал о способах сделать это программно, но эта логика была бы довольно круглой и могла вызвать проблемы с «обычными» файлами, которые не содержат формул, подобных этой.способ заставить Excel игнорировать эти формулы, которые равняются ничему?

Я использую Delphi и Office 2007 Interop API.

Ответы [ 2 ]

4 голосов
/ 28 сентября 2010

Я не знаю Delphi, но я создал макрос для получения последнего активного столбца, используя

With ActiveSheet
    row = .Cells(.Rows.Count, "B").End(xlUp).row
End With

Затем, имея строку, вы можете попытаться напечатать нужные вам столбцы.

ActiveSheet.Range("A1:" & "D" row).Select
Selection.PrintOut Copies:=1, Collate:=True

Надеюсь, это поможет!

4 голосов
/ 28 сентября 2010

Неа. Что касается Excel, ячейка заполняется, если она содержит формулу, независимо от результата этой формулы.

Вводя [end], а затем [down] в ячейке со значением, вы переходите к последней заполненной ячейке перед первой пустой в этом столбце, начиная с текущей позиции. Следовательно, ввод End-Down в столбцах с формулами должен привести вас до самого конца.

У вас есть возможность сообщить Excel, какой диапазон печатать, перед выполнением команды печати. Вы делаете это с помощью метода, который соответствует Print | Установите опцию меню Range (извините, на данный момент нет доступных интерфейсов com).

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

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

...