Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Реальное кол-во строк и столбцов в файле 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
6-1139391853
WebSQLNeeder
2006-02-08 12:44
2006.06.11
Как програмно через TWebBrowser нажать на кнопку во ФЛЕШ?!


1-1146027596
bsframer
2006-04-26 08:59
2006.06.11
Обработка текстовых файлов больших размеров (2 - 3 ГГб)


15-1147670570
Ega23
2006-05-15 09:22
2006.06.11
С Днём рождения! 15 мая


2-1148591788
TButton
2006-05-26 01:16
2006.06.11
корень третей степени


15-1147361198
AlexanderMS
2006-05-11 19:26
2006.06.11
Эх, глюки