• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Работа С Excel

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
В uses добавить comobj
var
form1: tform1;

xl : variant; // Переменная в которой создаётся обьект excel
Создание документа
// Обьект excel
xl := createoleobject('excel.application');
// Чтоб не задавал вопрос о сохранении документа
xl.displayalerts := false;
// новый документ
xl.workbooks.add;
// или загружаем его
xl.workbooks.open(mydir + '\akt.xls');
{ mydir - глобальная переменная типа string в неё помещаем путь
к каталогу запуска нашей програмы по событию formcreate
procedure tform1.formcreate(sender: tobject);
begin
getdir(0,mydir);
end;

я всегда так делаю, чтобы программу можно было в любой каталог
поместить вместе со своими дополнительными файлами, в этом случае путь
будет выбираться всегда правильно
}

// Делаем его видимым
xl.visible := true;
// Когда прога уже оттестирована лучше это делать в конце, быстрей работает,
// а пока нет лучше в начале
// Левое и правое поля отступа для печати
xl.workbooks[1].worksheets[1].pagesetup.leftmargin := 30;
xl.workbooks[1].worksheets[1].pagesetup.rightmargin := 10;

// Даём название страничке
xl.workbooks[1].worksheets[1].name := 'Прайс лист';
// Строка появляется на каждом листе при печати
xl.workbooks[1].worksheets[1].pagesetup.printtitlerows := '$3:$3';
xl.workbooks[1].worksheets[1].pagesetup.printtitlecolumns := '$a:$a';

// формат числа
for i := 4 to 13 do
xl.workbooks[1].worksheets[1].columns.numberformat := '0,00';
xl.workbooks[1].worksheets[1].columns[4].numberformat := '0';

// Таким способом можно задавать ширину колонки
xl.workbooks[1].worksheets[1].columns[1].columnwidth := 4.5;
xl.workbooks[1].worksheets[1].columns[2].columnwidth := 50;
for i := 3 to 13 do
xl.workbooks[1].worksheets[1].columns.columnwidth := 8;

// Шрифт жирный
xl.workbooks[1].worksheets[1].rows[1].font.bold := true;
xl.workbooks[1].worksheets[1].rows[1].font.color := clblack;
xl.workbooks[1].worksheets[1].rows[1].font.size := 16;
xl.workbooks[1].worksheets[1].rows[1].font.name := 'times new roman';
xl.workbooks[1].worksheets[1].cells[1,4] := 'Прайс лист';

// Выравнивам по центру по вертикали
xl.workbooks[1].worksheets[1].rows[1].verticalalignment := 2;
// Выравнивам по центру по горизонтали
xl.workbooks[1].worksheets[1].rows[1].horizontalalignment := 3;
// Обьединяем ячейки
xl.workbooks[1].worksheets[1].range['a1:d1'].merge;
// Выравнивам по центру по вертикали
xl.workbooks[1].worksheets[1].rows[3].verticalalignment := 2;
// Выравнивам по центру по горизонтали
xl.workbooks[1].worksheets[1].rows[3].horizontalalignment := 3;
// Выравнивам по левому краю
xl.workbooks[1].worksheets[1].cells[3,2].horizontalalignment := 2;
xl.workbooks[1].worksheets[1].cells[3,3].horizontalalignment := 2;

// Выравнивам по правому краю
xl.workbooks[1].worksheets[1].cells[3,4].horizontalalignment := 4;
xl.workbooks[1].worksheets[1].rows[3].font.color := clblack;
xl.workbooks[1].worksheets[1].rows[3].font.name := 'times new roman';
xl.workbooks[1].worksheets[1].rows[3].font.size := 12;
xl.workbooks[1].worksheets[1].rows[3].font.bold := true;
xl.workbooks[1].worksheets[1].cells[3,1] := '№';
xl.workbooks[1].worksheets[1].cells[3,2] := 'Наименование продукции';
xl.workbooks[1].worksheets[1].cells[3,3] := 'Ед. изм.';

// обрисовка диапазона ячеек только снизу
// borders[1] .... [4] - это края ячейки colorindex -4142 - пустой цвет i и n - переменные
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders.linestyle := 1;
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders.weight := 2;
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders[4].colorindex := 1;
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders[1].colorindex := -4142;
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders[2].colorindex := -4142;
xl.workbooks[1].worksheets[1].range['a' + inttostr(i) + ':' + chr(ord('c')+n) + inttostr(i)].borders[3].colorindex := -4142;

// обрисовка диапазона ячеек
xl.workbooks[1].worksheets[1].range['a3:' + chr(ord('c')+n) + inttostr(i)].borders.linestyle := 1;
xl.workbooks[1].worksheets[1].range['a3:' + chr(ord('c')+n) + inttostr(i)].borders.weight := 2;
xl.workbooks[1].worksheets[1].range['a3:' + chr(ord('c')+n) + inttostr(i)].borders.colorindex := 1;

// присвоение ячейке значения
xl.workbooks[1].worksheets[1].cells[i,j] := 'К-во';
// Поворачивать слова, писать вертикально, под углом и т.д.
xl.workbooks[1].worksheets[1].rows[2].orientation := 90;
xl.workbooks[1].worksheets[1].range['a2:b2'].orientation := 0;
 
V Оффлайн

varezprog

Принятый Кодер
Регистрация
20 Май 2016
Сообщения
11
Баллы
30
Хорошо, а как выполнить макрос уже созданный на листе Excel?
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Код:
 procedure TForm1.Button1Click(Sender: TObject);
begin
try
  MyExcel:= GetActiveOleObject('Excel.Application');
  MyExcel.Run('Макрос1');
except
  Showmessage ('Не открыт Excel');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try
  MyWord := GetActiveOleObject('Word.Application');
  MyWord.ActiveDocument.Application.Run('Макрос1');
except
  Showmessage ('Не открыт Word');
end;
end;
 
Вверх Снизу