Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, пожалуйста, написать программу, работающую в Excel через Delphi.

76K
24 ноября 2011 года
SIANAN
2 / / 24.11.2011
Нужно создать таблицу Excel, причём количество столбцов и строк должно задаваться с формы. Также присутствуют ещё 2 дополнительных столбца, в 1-ом подсчитывается построчно сумма, во 2-ом - отношение суммы по строке к общей сумме по всем строкам...

Пыталась написать сама, но у меня прога написана, мягко говоря, неккоректно....

[DELPHI]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
XL, a: Variant;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Создание новой таблицы
XL:=CreateOleObject('Excel.Application');
XL.WorkBooks.Add;
XL.DisplayAlerts:=False; // Вопрос о сохранении таблицы не задавать

a:=VarArrayCreate([1,6,1,12], varVariant);

XL.WorkBooks[1].WorkSheets[1].Range['A3'].Value:='1';
XL.WorkBooks[1].WorkSheets[1].Range['A4'].Value:='2';
XL.WorkBooks[1].WorkSheets[1].Range['A5'].Value:='3';
XL.WorkBooks[1].WorkSheets[1].Range['A6'].Value:='4';
XL.WorkBooks[1].WorkSheets[1].Range['A7'].Value:='5';
XL.WorkBooks[1].WorkSheets[1].Range['A8'].Value:='6';
XL.WorkBooks[1].WorkSheets[1].Range['B2'].Value:='1';
XL.WorkBooks[1].WorkSheets[1].Range['C2'].Value:='2';
XL.WorkBooks[1].WorkSheets[1].Range['D2'].Value:='3';
XL.WorkBooks[1].WorkSheets[1].Range['E2'].Value:='4';
XL.WorkBooks[1].WorkSheets[1].Range['F2'].Value:='5';
XL.WorkBooks[1].WorkSheets[1].Range['G2'].Value:='6';
XL.WorkBooks[1].WorkSheets[1].Range['H2'].Value:='7';
XL.WorkBooks[1].WorkSheets[1].Range['I2'].Value:='8';
XL.WorkBooks[1].WorkSheets[1].Range['J2'].Value:='9';
XL.WorkBooks[1].WorkSheets[1].Range['K2'].Value:='10';
XL.WorkBooks[1].WorkSheets[1].Range['L2'].Value:='11';
XL.WorkBooks[1].WorkSheets[1].Range['M2'].Value:='12';
XL.WorkBooks[1].WorkSheets[1].Range['N2'].Value:='Sum';
XL.WorkBooks[1].WorkSheets[1].Range['O2'].Value:='Weight';

//Оформление созданной таблицы
XL.WorkBooks[1].WorkSheets[1].Range['A1:O1'].Merge;
XL.WorkBooks[1].WorkSheets[1].Range['A1'].Value:='Определение min группы экспертов';
XL.WorkBooks[1].WorkSheets[1].Range['A1'].HorizontalAlignment:=3;
XL.WorkBooks[1].WorkSheets[1].Range['A:M'].ColumnWidth:=3;

//Вычисление сумм
XL.WorkBooks[1].WorkSheets[1].Range['N3'].Formula:='=sum(B3:M3)';
XL.WorkBooks[1].WorkSheets[1].Range['N4'].Formula:='=sum(B4:M4)';
XL.WorkBooks[1].WorkSheets[1].Range['N5'].Formula:='=sum(B5:M5)';
XL.WorkBooks[1].WorkSheets[1].Range['N6'].Formula:='=sum(B6:M6)';
XL.WorkBooks[1].WorkSheets[1].Range['N7'].Formula:='=sum(B7:M7)';
XL.WorkBooks[1].WorkSheets[1].Range['N8'].Formula:='=sum(B8:M8)';
XL.WorkBooks[1].WorkSheets[1].Range['N9'].Formula:='=sum(N3:N8)';
//Вычисление удельного веса каждого эксперта
XL.WorkBooks[1].WorkSheets[1].Range['O3'].Formula:='=N3/N9';
XL.WorkBooks[1].WorkSheets[1].Range['O4'].Formula:='=N4/N9';
XL.WorkBooks[1].WorkSheets[1].Range['O5'].Formula:='=N5/N9';
XL.WorkBooks[1].WorkSheets[1].Range['O6'].Formula:='=N6/N9';
XL.WorkBooks[1].WorkSheets[1].Range['O7'].Formula:='=N7/N9';
XL.WorkBooks[1].WorkSheets[1].Range['O8'].Formula:='=N8/N9';

XL.WorkBooks[1].WorkSheets[1].Range['B3:M8'].Value:=a;
XL.Visible:=true;

end;

end.
[/DELPHI]

А дальше нужно провести сортировку в последнем столбце (в столбце 'Weight'): найти min, потом удалить строку с этим значением, пересчитать этот столбец снова, учитывая оставшиеся данные и снова повторять эту операцию по удалению строки, пока не остануться варианты с равными значениями... В ответе надо вывести номера оставшихся строк.

Значение ячеек таблицы будут заполняться только '1' или ' '.

Помогите, пожалуйста с данной задачей... Я уже около недели мучаюсь, не могу решить... Заранее спасибо.
14
25 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Что некорректно в вашем коде? Как вы его написали? И, наконец, Почему изначально не разместили тему в разделе студентов?
76K
17 декабря 2011 года
SIANAN
2 / / 24.11.2011
Уже всё исправила, спасибо. Не там разместила по незнанию.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог