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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2010, 01:04   #1
Alkifr
Пользователь
 
Регистрация: 25.04.2010
Сообщений: 22
По умолчанию Excel с циклом

procedure TForm1.Button1Click(Sender: TObject);
var Sheet,Colum:Variant;
i,i1,f,f1,rc:Integer;
begin
E := CreateOleObject('Excel.Application' );
E.Workbooks.Add;
if SaveDialog1.Execute then
E.ActiveWorkbook.SaveAs(SaveDialog1 .FileName);
E.Workbooks[1].WorkSheets[1].Name:='Каталог';
Colum:=E.Workbooks[1].WorkSheets['Каталог'].Columns;
Colum.Columns[1].ColumnWidth:=17.86;
Colum.Columns[2].ColumnWidth:=15.71;
Colum.Columns[3].ColumnWidth:=17.86;
Colum.Columns[4].ColumnWidth:=19.29;
Colum.Columns[5].ColumnWidth:=22.29;
Colum.Columns[6].ColumnWidth:=12.29;

Colum:=E.Workbooks[1].WorkSheets['Каталог'].Rows;
Colum.Rows[2].Font.Bold:=true;

Sheet:=E.Workbooks[1].WorkSheets['Каталог'];
Sheet.Cells[2,1]:='Название';
Sheet.Cells[2,2]:='Страна';
Sheet.Cells[2,3]:='Тип телевизора';
Sheet.Cells[2,4]:='Поддержка стерео';
Sheet.Cells[2,5]:='Частота разверстки, Гц';
Sheet.Cells[2,6]:='Цена, руб';
for i:=1 to stringgrid1.RowCount-1 do begin
for i1:=1 to 5 do begin
rc:=stringgrid1.rowcount;
for f:=1 to rc do
for f1:=3 to 6 do
Sheet.Cells[f,f1]:=stringgrid1.Cells[i1,i];
end;
end;
E.ActiveWorkbook.Close;
end;

неправильно сохраняет в Excel, как исправить?
Alkifr вне форума Ответить с цитированием
Старый 30.10.2010, 08:38   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
неправильно сохраняет в Excel, как исправить?
Зачем лишние циклы? Когда можно сделать много проще.
Код:
  for i:=1 to stringgrid1.RowCount-1 do begin
    //почему из StringGrid экспортируются 5 колонок, когда в Excel'е их объявлено 6?
    for i1:=1 to 5 do begin 
{
      rc:=stringgrid1.rowcount;
      for f:=1 to rc do
        for f1:=3 to 6 do
          Sheet.Cells[f, f1]:=stringgrid1.Cells[i1,i];
}
      Sheet.Cells[i+2, i1+1]:=stringgrid1.Cells[i1,i];
    end;
  end;
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос с циклом Ученик.6Б Общие вопросы Delphi 36 11.06.2010 19:44
Помогите с циклом!!!! klimpashka23 Microsoft Office Excel 1 27.09.2009 17:06
помогите с циклом pobedin БД в Delphi 2 28.08.2009 14:56
Задача с циклом for в c++ Many man Помощь студентам 5 14.12.2008 12:01
Помогите с циклом Almost_Famous Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 27.03.2008 21:08