Форум: "Основная";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизРеальное кол-во строк и столбцов в файле Excel Найти похожие ветки
← →
kyn66 © (2006-05-06 12:10) [0]Уважаемые мастера, чтобы определить САБЖ, и делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var
MyExcel: Variant;
Rows, Columns: Integer;
begin
MyExcel := CreateOleObject("Excel.Application");
MyExcel.WorkBooks.Open("c:\txt\Info.xls ");
Rows := MyExcel.ActiveSheet.UsedRange.Rows.Count;
Columns := MyExcel.ActiveSheet.UsedRange.Columns.Count;
ShowMessage("Строк -" + IntToStr(Rows) + #10#13 +
"Столбцов - " + IntToStr(Columns));
MyExcel.Quit;
end;
Все вроде нормально, но я обнаружил, что кол-во строк может определиться неверно, если снизу есть пустые (может когда-то заполнявшиеся). А мне нужно знать именно реально заполненные. Может чего нужно дополнить в коде?
← →
Shirson © (2006-05-06 12:22) [1]Можно пробежаться в цикле до первой пустой строки.
Есть подозрение, что UsedRange.Rows.Count выдаёт, с чистой совестью, пустые строки, которые форматировались или у которых стоят borders.
← →
kyn66 © (2006-05-06 12:31) [2]А по чем пробегаться-то? В некоторых столюцах значения могут отсутствовать. Хотя в первом - всегда будет значение... И что из себя будет представлять такая пробежка? К чему привязывать цикл?
← →
Shirson © (2006-05-06 12:46) [3]While MyExcel.activeworkbook.activeSheet.cells[y,1]<>"" do
y:=y+1;
← →
_RusLAN © (2006-05-06 12:55) [4]kyn66 © (06.05.06 12:31) [2]
А по чем пробегаться-то? В некоторых столюцах значения могут отсутствовать. Хотя в первом - всегда будет значение... И что из себя будет представлять такая пробежка? К чему привязывать цикл?
может так?
цикл начиная с Rows := MyExcel.ActiveSheet.UsedRange.Rows.Count до 1
При нахождении первой непустой строки (там где в первом столбце есть значение) выходите из цикла. Количество пройденых строк отнимаете от MyExcel.ActiveSheet.UsedRange.Rows.Count
← →
Jeer © (2006-05-06 13:35) [5]Когда-то такая задачка у меня возникла - решение было, возможно, не самым лучшим и верным, но оно работало.
Первые n пустых строк по обязательной колонке считаются концом актуального диапазона.
← →
kyn66 © (2006-05-06 13:54) [6]Т.е. где-то нужно предварительно сохранять непустые?
← →
Jeer © (2006-05-06 14:16) [7]что значит сохранять ?
открываешь файл, по листу идешь по строкам и ищешь первые пустые n строк (ячеек по обязательной колонке)
← →
balepa © (2006-05-06 14:38) [8]Заведи себе №п/п
← →
evvcom © (2006-05-06 14:39) [9]То, что ты получил, и есть реальное количество строк и столбцов. Даже если они пустые, они хранятся в файле! Если ты считаешь, что они не содержат полезной информации, открой документ, выдели строки (столбцы), но не ячейки! и удали их (опять же не кнопкой Del, а командой "Удалить строки/столбцы"); сохрани документ. Тогда и файл будет поменьше и получишь то, что желаешь, и на тормоза из-за никчемной проверки не нарвешься.
← →
kyn66 © (2006-05-06 15:21) [10]>> evvcom
Хм ... это я и делал с одним файлом. А если их более 250, что по каждому проходить? Вот и делаю своеобразную автоматизацию. По правде говоря, все это подготавливается для перегона в DBF.
← →
Jeer © (2006-05-06 15:28) [11]kyn66 © (06.05.06 15:21) [10]
WSH, JScript - пишешь скрипт, открываешь как xls записываешь как dbf
← →
kyn66 © (2006-05-06 15:54) [12]А как мне в этом цикле обратиться к ячейке с проверкой, если она имеет формат "Общий", т.е. туда можно записать как число так и текст. Делая так - if ExcelApp.Cells[i, 0].Value <> "" then - вылетает ошибка 8-(
← →
Jeer © (2006-05-06 16:18) [13]OLEVariant nil
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c