Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 18.06.2013, 16:02
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

ну тогда еще до кучи задачка

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

П.С. странно не помечается цветом
отметил прям в коде
строка в коде №79-80


Код:
unit metrologiya;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ExtCtrls, ComObj, OleServer, ExcelXP;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Label2: TLabel;
    GroupBox1: TGroupBox;
    Bevel1: TBevel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);

begin
with StringGrid1 do begin
FixedCols:=1;FixedRows:=0;
//ColCount:=5;
Cells[0,0]:='125';
Cells[0,1]:='625';
Cells[0,2]:='1250';
Cells[0,3]:='1875';
Cells[0,4]:='2375';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Form1: TForm1;
  SG1  :  Array[1..6,1..6] Of real;  
  SG2  :  Array[1..5] Of real;     
  i, j:  integer;
  s:real;
const
Pgsk=2500; //шкала по давлению газа перед стопорным клапаном



begin

 For i:=1 To 6 Do
   For j:=1 To 6 Do
    If  (StringGrid1.Cells[j-1,i-1]='') Then
      SG1[j,i] := 0
    Else  //StringGrid1.Cells[j-1+StringGrid1.FixedRows,i-1+StringGrid1.FixedCols]
      SG1[j,i] := StrToFloat(StringGrid1.Cells[j-1,i-1]);
      //SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]);  
For i:=1 To 5 Do                      
    Begin
S:=0;
for j:=2 to 6 do begin                                      
     S:=s+SG1[j,i];

End;


SG2[i]:=((S/5)-StrToFloat(StringGrid1.Cells[0,i-1]))/2500*100;    вот это выражение
передается в эксель, мне нужно чтобы еще передавалось результат выражения S/5
                                            
 End;


  For i:=1 To 5 Do
   StringGrid2.Cells[0,i-1] := FloatToStr(SG2[i])   
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
    case Key of
       #8,'0'..'9' :  ; // цифры и <Back Space>

       #13:      // клавиша <Enter>
            if StringGrid1.Col < StringGrid1.ColCount - 1
                   then StringGrid1.Col := StringGrid1.Col + 1;

       '.',',': // разделитель целой и дробной частей числа
                begin
                  if Key <> DecimalSeparator then
                       Key := DecimalSeparator; // заменим разделитель на допустимый
                  if Pos(StringGrid1.Cells[StringGrid1.Col,0],DecimalSeparator) <> 0
                        then Key := Chr(0); // запрет ввода второго разделителя
                end;

        '-':    // минус можно ввести только первым символом,
                // т.е. когда ячейка пустая
                if Length(StringGrid1.Cells[StringGrid1.Col,0]) <> 0
                      then Key := Chr(0);

        else   // остальные символы запрещены
               key := Chr(0);
    end;
end;





procedure TForm1.Button2Click(Sender: TObject);
Var
  ExcelApp,
  ExcelSheet,
  ExcelCol,
  ExcelRow,
  Excel: Variant;
  Size: real;
  i, j, N, M: Word;

begin
  // Запускаю приложение Excel
  ExcelApp:=CreateOleObject('Excel.Application');
  ExcelApp.Visible:=True;

  // Создаю рабочую книгу
  ExcelApp.Workbooks.Add(-4167);
  ExcelApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
  ExcelCol:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
//  Size:=8.43; // Ширина ячейки  StringGrid1.DefaultRowHeight
  ExcelApp.Columns.Columns[1].ColumnWidth:=5;
  ExcelApp.Columns.Columns[2].ColumnWidth:=18;
  ExcelApp.Columns.Columns[3].ColumnWidth:=9;
  ExcelApp.Columns.Columns[4].ColumnWidth:=12;
  ExcelApp.Columns.Columns[5].ColumnWidth:=11;
  ExcelApp.Columns.Columns[6].ColumnWidth:=13;
  ExcelApp.Columns.Columns[7].ColumnWidth:=13;
  ExcelApp.Columns.Columns[8].ColumnWidth:=13;

  N:=StringGrid1.ColCount-1; // Число ячеек в строке
  //Если StringGrid содержит переменное число строк, то пользуемся циклом:
 // For j:=0 To N Do
   // ExcelCol.Columns[j+1].ColumnWidth:=Size;

  ExcelRow:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
  ExcelRow.Rows[1].Font.Bold:=True; // Заголовки столбцов - жирные

  // Ввод данных в лист Excel из StringGrid
  ExcelSheet:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'];
  For i:=0 To StringGrid2.RowCount-1 Do
    For j:=0 To StringGrid2.ColCount-1 Do
       ExcelSheet.Cells[i+17,j+8]:=StringGrid2.Cells[j, i];  //вот тут и проблемка





       //построение шаблона таблицы

        ExcelApp.Range['A1:H1'].Merge;
        ExcelSheet.Cells[1,1].HorizontalAlignment := 3;
        ExcelSheet.Cells[1,1].Value:='ПРОТОКОЛ №';
        ExcelSheet.Cells[2,1].Value:='';
        ExcelSheet.Cells[3,1].Value:='Проверка измерительный каналов САУ ГТГ';
        ExcelSheet.Cells[4,1].Value:='';
        ExcelSheet.Cells[5,1].Value:='';
        ExcelSheet.Cells[6,1].Value:='';
        ExcelSheet.Cells[7,1].Value:='Условия проведения проверки:';
        ExcelSheet.Cells[8,1].Value:='Температура окружающего воздуха 24,0 С';
    //    ExcelSheet.Cells[8,1].Value:='';
        ExcelSheet.Cells[9,1].Value:='Давление 104,3 кПа';
  //      ExcelSheet.Cells[10,1].Value:='';
        ExcelSheet.Cells[10,1].Value:='Относительная влажность 31%';
//        ExcelSheet.Cells[12,1].Value:='';
        ExcelSheet.Cells[11,1].Value:='Напряжение питания 220В';
        ExcelSheet.Cells[12,1].Value:='Эталоны: многофукциональный калибратор МС5-R-IS №20106573';
        ExcelSheet.Cells[13,1].Value:='ПКА ТКМ №24286, МЦП-2М №02066784';
        ExcelSheet.Cells[14,1].Value:='';
        ExcelApp.Range[ExcelApp.Cells[15,1], ExcelApp.Cells[15,6]].Select;
        ExcelApp.Selection.HorizontalAlignment:=3;
        ExcelApp.Selection.WrapText:=true;
        ExcelApp.Selection.VerticalAlignment:=2;
        ExcelApp.Selection.Borders.LineStyle:=1;
        ExcelApp.Range['A15:A16'].Merge;
        ExcelSheet.Cells[15,1].Value:='№ п/п';
        ExcelApp.Range['B15:B16'].Merge;
        ExcelSheet.Cells[15,2].Value:='Наименование измеряемого параметра';
        ExcelApp.Range['C15:C16'].Merge;
        ExcelSheet.Cells[15,3].Value:='Адрес';
        ExcelApp.Range['D15:D16'].Merge;
        ExcelSheet.Cells[15,4].Value:='Расчетное значение контролируемого параметра';
        ExcelApp.Range['E15:E16'].Merge;
        ExcelSheet.Cells[15,5].Value:='Значение входного сигнала';
        ExcelApp.Range['F15:F16'].Merge;
        ExcelSheet.Cells[15,6].Value:='Измеренное значение контролируемого параметра';
        ExcelApp.Range['G15:H15'].Merge;
        ExcelSheet.Cells[15,7].Value:='Погрешность ЭТ ИК';
        ExcelSheet.Cells[16,7].Value:='Допустимая';
        ExcelSheet.Cells[16,8].Value:='Фактическая';
 //       ExcelApp.Range[ExcelApp.Cells[15,7], ExcelApp.Cells[15,8]].Select;
   //     ExcelApp.Selection.MergeCells:=true;
        end;

end.



Последний раз редактировалось Scorpuha, 18.06.2013 в 16:20.
Ответить с цитированием
  #17  
Старый 18.06.2013, 16:57
Scorpuha Scorpuha вне форума
Новичок
 
Регистрация: 13.06.2013
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

в строку 75 добавил код
StringGrid2.Cells[1,i-1] := FloatToStr(S/5);

получилось добавление нужных значений в грид2. теперь надо вывести эти значения (из второго столбца) в эксель, а именно в в 17-ю строку в 6-ой столбец

Последний раз редактировалось Scorpuha, 18.06.2013 в 17:04.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025