Главная страница
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.044 c
2-1148297951
Николай Владимирович
2006-05-22 15:39
2006.06.11
=> Странная штука с TreeView, не проходи мимо


2-1148662615
ZV
2006-05-26 20:56
2006.06.11
BIOS LPT port


5-1132898095
DimaBr
2005-11-25 08:54
2006.06.11
Вызов редактора суб-компонента


6-1139390426
Lynx_rus
2006-02-08 12:20
2006.06.11
Выбор Dialap- соеденения


2-1148388071
sashki
2006-05-23 16:41
2006.06.11
типы windows.tosversioninfo