Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 07:33   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию Как убрать пустые строки при открытии XLS файла

Собственно волнует такой вопрос, имеется нижеприведенная функция, в которой при добавлении колонок и ячеек так же добавляются и пустые строки. Как этого избежать?


Код:
function Base_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;

var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;

begin
Screen.Cursor:=crAppStart;
Result := False;
XLApp := CreateOleObject('Excel.Application');

try
   XLApp.Visible := False;
   XLApp.Workbooks.Open(AXLSFile);
   Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
   Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
   x := XLApp.ActiveCell.Row;
   y := XLApp.ActiveCell.Column;
   AGrid.RowCount := x;
   AGrid.ColCount := y;
   RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
   k := 1;
   repeat
     for r := 1 to y do
      AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
     Inc(k, 1);
     AGrid.RowCount := k + 1;
   until k > x;
   RangeMatrix := Unassigned;
finally
   if not VarIsEmpty(XLApp) then
   begin
     XLApp.Quit;
     XLAPP := Unassigned;
     Sheet := Unassigned;
     Result := True;
   end;
end;
Screen.Cursor:=crDefault;
end;
Des вне форума Ответить с цитированием
Старый 06.11.2010, 09:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Зачем городить кучу требухи, но проще ли банально двумя простыми циклами:
Код:
   
  for k:=1 to x do
     for r := 1 to y do
      AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при открытии файла Klim Bassenger Microsoft Office Excel 2 16.09.2018 15:44
после добавления таблицы в конце файла появляются пустые строки OLEG'arh Microsoft Office Word 4 17.09.2010 16:11
Ошибка при открытии файла Ciberal Общие вопросы Delphi 2 09.06.2009 22:58
Ошибка при открытии файла.doc ruavia3 Microsoft Office Word 1 20.05.2009 20:27
C++: ошибка при открытии файла Retiz Помощь студентам 2 30.08.2008 22:12