Delphi — Клёвый код https://coolcode.ru Скриптописание и кодинг Thu, 15 Oct 2015 09:23:41 +0000 ru-RU hourly 1 https://wordpress.org/?v=5.8.12 https://coolcode.ru/wp-content/uploads/2015/10/YO1-150x150.png Delphi — Клёвый код https://coolcode.ru 32 32 Сортировка пузырьком. https://coolcode.ru/sortirovka-puzyirkom/ https://coolcode.ru/sortirovka-puzyirkom/#respond Sun, 31 May 2015 11:21:00 +0000 http://coolcode.ru/?p=2601

Сортировка простыми обменами, сортиро́вка пузырько́м Английский язык bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: Θ$$(n^2)$$.

Алгоритм:

1) Последовательно бежим по массиву и сравниваем два соседних элемента, если порядок не верный то меняем их местами.

2) Повторять проходы на один меньше, чем кол-во элементов в массиве или пока не окажеться, что за проход не произведено ни одной замены.

Просмотрим алгоритм на примере:

Отсортируем массив: 524613 где каждая цифра это элемент массива.

Начало цикла, в массиве 524613 нет отсортированных чисел:

1) Первый проход:

524613->254613->245613->245613->245163->245136

Мы бежим по массиву и меняем элементы местами, которые находятся рядом друг с другом и не соответствуют порядку сортировки. Первый шаг это цифры 5 и 2, второй 5 и 4, третий 6 и 5, четвёртый 6 и 1, пятый 6 и 3.

2) Второй проход.

245136->245136->245136->241536->241356->241356

3) Третий проход.

241356->241356->214356->213456->213456->213456

4) Четвёртый проход.

213456->123456->123456->123456->123456->123456

После первого шага видно, что массив отсортирован, но условия выхода из сортировки ещё нет сказано, что не должно проходить ни одного изменения, или шаг должен быть на один меньше, чем кол-во элементов в массиве.

5) Пятый проход финальный.

123456->123456->123456->123456->123456->123456

Сразу удовлетворилось два условия выхода, небыло произведено ни одного изменения и проход по счёту равен количеству элементов в массиве минус 1.

Реализация алгоритма на языке Паскаль:

program BubbleSort;
Const
  N=100;

procedure Swap(var X,Y:Real);
begin
  X:=X+Y;
  Y:=X-Y;
  X:=X-Y;
end;

Procedure Bubble_Sort (var a : array of real; LengthArray :Integer);
var i,i2:integer;
begin
 for i:=1 to LengthArray-1 do
  for i2:=1 to LengthArray-2 do
   if a[i2+1]<a[i2] then Swap(a[i2],a[i2+1]);
end;

var
a,a1 : array [1..N] of real;
i: integer;

begin
 for i:=1 to N do a[i]:=Random(100);
 a1:=a;

 Bubble_Sort(a1,N);


 for i:=1 to N do writeln(a[i]:7:0,'  ',a1[i]:7:0);

end.

Реализация алгоритма на языке C:

#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

const int n = 100;

void Swap(int &x,int &y)
{
	x = x + y;
	y = x - y;
	x = x - y;
}

void Bubble_Sort(int *a, int LeanghtArray)
{
	for (int i = 1; i < LeanghtArray-1; ++i){
		for (int i2 = 1; i2 < LeanghtArray-1; ++i2){
			if (a[i2] > a[i2+1]){ 
				Swap(a[i2], a[i2+1]);
			}
		}
	}
}


int _tmain(int argc, _TCHAR* argv[])
{
	int a[n], a1[n], i, i2;
	for (int i = 1; i < n; i++){ a[i] = rand(); a1[i] = a[i]; }
	
	Bubble_Sort(a, n);
	
	for (int i = 1; i < n; i++){ cout << a[i] <<" "<<a1[i]<<endl; }
	cin >> i;
	return 0;
}

 

]]>
https://coolcode.ru/sortirovka-puzyirkom/feed/ 0
Сортировка выбором. https://coolcode.ru/sortirovka-vyiborom/ https://coolcode.ru/sortirovka-vyiborom/#respond Sat, 30 May 2015 06:41:04 +0000 http://coolcode.ru/?p=2594

Сортировка выбором (Selection sort) — Алгоритм сортировки. Может быть как устойчивый, так и неустойчивый. На массиве из n элементов имеет время выполнения в худшем, среднем и лучшем случае Θ$$(n^2)$$, предполагая что сравнения делаются за постоянное время.

Алгоритм:

1) Ищем порядковый номер минимального значения в не отсортированной части массива.

2) Меняем его с крайним не отсортированным значением, если крайнее но отсортированное значение является минимальным ничего не делаем.

3) Повторяем пункты 1 и 2 пока весь массив не отсортируется.

 

Посмотрим алгоритм на примере:

Отсортируем массив: 524613 где каждая цифра это элемент массива.

 

Начало цикла, в массиве 524613 нет отсортированных чисел:

524613

1) Hаходим «1», это самое минимальное значение в массиве, и меняем с 5, это самое крайнее не отсортированное значение в массиве:

524613 -> |124653

2) 2 оказалась самым крайним не отсортированным значением, не меняем его положения

1|24653 -> 1|24653

3) Далее минимальным значением является 3, меняем её с 4.

12|4653-> 12|3654

3) Далее минимальным значением является 4, меняем её с 6.

123|654 -> 123|456

4) 5 оказалась самым крайним не отсортированным значением, не меняем его положения

123456 -> 1234|56

5) 6 оказалась самым крайним не отсортированным значением, не меняем его положения

123456 -> 12345|6

 

Реализация алгоритма на языке Паскаль:

program SelectionSort;

Const
  N=100;

procedure Swap(var X,Y:Real);
begin
  X:=X+Y;
  Y:=X-Y;
  X:=X-Y;
end;

Procedure Selection_Sort (var a : array of real; LengthArray :Integer);
var i,i2,Min_idx:integer;
begin
 for i:=0 to LengthArray-1 do
  begin
   Min_idx:=i;
   for i2:=i+1 to LengthArray-1 do
     if a[Min_idx]>a[i2] then Min_idx:=i2;

   if i<>Min_idx then Swap(a[i],a[Min_idx]);
  end;
end;

var
a,a1 : array [1..N] of real;
i: integer;

begin
 for i:=1 to N do a[i]:=Random(100);
 a1:=a;

 Selection_Sort(a1,N);


 for i:=1 to N do writeln(a[i]:7:0,'  ',a1[i]:7:0);
end.

Реализация алгоритма на языке C++:

#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

const int n = 100;

void Swap(int &x,int &y)
{
	x = x + y;
	y = x - y;
	x = x - y;
}

void Selection_Sort(int *a, int LeanghtArray)
{
	int Min_idx;
	for (int i = 1; i < LeanghtArray; ++i){
		Min_idx = i;
		for (int i2 = i + 1; i2 < LeanghtArray; ++i2){
			if (a[Min_idx] > a[i2]){ 
				Min_idx = i2; 
			}
		}
		if (i != Min_idx) { 
			Swap(a[i], a[Min_idx]);}
	}
}


int _tmain(int argc, _TCHAR* argv[])
{
	int a[n], a1[n], i, i2;
	for (int i = 1; i < n; i++){ a[i] = rand(); a1[i] = a[i]; }
	
	Selection_Sort(a, n);
	
	for (int i = 1; i < n; i++){ cout << a[i] <<" "<<a1[i]<<endl; }
	cin >> i;
	return 0;
}

 

]]>
https://coolcode.ru/sortirovka-vyiborom/feed/ 0
Релиз DevExpress Universal v14.1 доступен для скачивания. https://coolcode.ru/reliz-devexpress-universal-v14-1-dostupen-dlya-skachivaniya/ https://coolcode.ru/reliz-devexpress-universal-v14-1-dostupen-dlya-skachivaniya/#respond Fri, 20 Jun 2014 03:44:02 +0000 http://coolcode.ru/?p=1857

На официальном сайте DevExpress сталодоступен для скачивания новый пакет решений DevExpress Universal v14.1.

 

Данный пакет включает в себя десятки новых особенностей и решений:

Для WinForms, WPF и Windows 8 разработки:

  • New Microsoft Dynamics-Inspired Tile Navigation Pane
  • New Outlook 2013-Inspired UX Controls
  • Enhanced Excel-Inspired Spreadsheet Features
  • New iOS-inspired Touch-Friendly Scrollbars
  • New Office for iPad-Inspired Ribbon UI
  • New Windows RT Controls

Для ASP.NET и MVC разработки:

  • New Excel-Inspired MVC Spreadsheet
  • New ASP.NET and MVC End-User Report Designer
  • Enhanced ASP.NET and MVC Data Grid
  • Enhanced HTML Editor with Ribbon UI Support
  • New MVC Dashboard Viewer

Для Mobile и HTML 5 Разработки :

  • New client-side Data Grid Widget with Integrated Data Editing
  • Six New Multi-Purpose HTML 5 Widgets
  • New CSS Theme Builder
  • Improved View Rendering Performance for Mobile Applications
  • Improved Visual Studio Integration

С официального блога компании самые масштабными из них:

WinForms

TileNav Pane и TileBar — компоненты для создания навигационного интерфейса в стиле MS Office 2013 (в том числе, ориентированные под touch-устройства):

DevExpressWinForms

DevExpressTileBar

Новый BreadCrumb Editor (редактор «хлебных крошек»), который позволяет сделать удобную навигацию в вашем приложении:

DevExpressBreadCrumbEditor

Радикально улучшенный компонент Spreadsheet, с поддержкой паролей, улучшенной отрисовкой графиков и многими другими «фишками»:

DevExpressSpreadsheet

WPF

Аналогичные WinForms, компоненты TileNav Pane и TileBar в стиле MS Office 2013:

DevExpressWinForms

DevExpressTileBar

Новый компонент BarCode, который позволяет вставлять одномерные и двухмерные штрих-коды в ваше приложение:

DevExpressBarCode

Значительные улучшения по быстродействию и расширенная поддержка условного форматирования в компоненте WPF Grid:

DevExpressWPFGrid

 

ASP.NET WebForms + MVC

ASP.NET Spreadsheet — с поддержкой основных возможностей для работы с Excel файлами и продвинутыми настройками внешнего вида:

DevExpressASPNETSpreadsheet

End-User Report Designer (пока в CTP версии) — онлайн инструмент конечных пользователей для кастомизации отчётов перед печатью:

DevExpressEndUserReportDesigner

XAF

Уникальный в своём роде продукт теперь включает специальный Wizard для удобного и быстрого старта новых пользователей:

DevExpressWizardXAF

Dashboard

Мощный enterprise-продукт теперь предоставляет «серверный режим» обработки запросов данных для повышения производительности приложения.

Также были добавлены возможности визуализации и работы с аналитическими данными на картах (Pie, Bubble диаграммы, кластеризация данных), широко применяемых в инфографике, и клиентское API для доступа к сгруппированным и исходным данным:

DevExpressDashboard

HTML5 & JavaScript

Долгожданная линейка клиентских HTML5 / JavaScript виджетов, в том числе и грид:

DevExpressWidget

CodeRush

Новый код провайдер «Import Namespace», который позволяет добавлять using нужного namespace-а в начало файла. В отличие от стандартного провайдера Visual Studio, провайдер от CodeRush позволяет добавить using для типа, сборка которого не добавлена в референсы проекта. В этом случае будет добавлен автоматически.

Также, команда «Optimize namespace reference» также стала доступна в XAML файлах:

DevExpressUsing

VCL

Кроме того, на днях мы анонсировали выход бета версии VCL продуктов. О её новых возможностях также можно узнать в специальном разделе на сайте DevExpress.
Особенно хотелось бы отметить новый Spreadsheet контрол. Он был переписан с нуля с целью упрощения архитектуры и механизма управления форматированием ячеек, и теперь поддерживает современный формат хранения данных электронных таблиц Excel, встроенные изображения, фиксированные области и многое другое:

DevExpressVCL

И контрол для отображения географических карт:

DevExpressControlMap

В комментариях к этой статье мы будем рады ответить на все ваши вопросы о новой версии наших продуктов.

]]>
https://coolcode.ru/reliz-devexpress-universal-v14-1-dostupen-dlya-skachivaniya/feed/ 0
Взаимодействие с Excel, с помощью OLE объектов в Delphi. CreateOleObject, Open, SaveAs, close. https://coolcode.ru/vzaimodeystvie-s-excel-s-pomoshhyu-ole-obektov-v-delphi-createoleobject-open-saveas-close/ https://coolcode.ru/vzaimodeystvie-s-excel-s-pomoshhyu-ole-obektov-v-delphi-createoleobject-open-saveas-close/#comments Mon, 12 May 2014 07:51:09 +0000 http://coolcode.ru/?p=1035

Разберём взаимодействие Delphi с Excel  с помощью OLE объектов, на примере программы Statistic.

Исходный код программы можно скачать на странице программы или по этой ссылке: Statistic_source.

В этой программе обращение к Excel происходит, в двух местах.  При добавлении нового шаблона формы в программу и при вычислениях.

Разберём как происходит добавление формы в программу:

procedure TFOptions.Button3Click(Sender: TObject); //Предварительная обработка шаблона
var DatFile:File of integer;
 k1,k2,k3,k4,length : integer;
 IniFile:TIniFile;
begin
 If OpenDialog1.Execute Then
  BEGIN
  Main.XLApp:= CreateOleObject('Excel.Application');
  Main.XLApp.DisplayAlerts:=false;
  Main.XLApp.WorkBooks.Open(OpenDialog1.FileName);
  AssignFile (DatFile,Main.ProgDir+'\dat\ '+ChangeFileExt (ExtractFileName(OpenDialog1.FileName),'.dat')); //*
  Rewrite(DatFile);
  for k1:=1 to Main.XLApp.Workbooks[1].WorkSheets.Count do
  for k2:=1 to Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Columns.Count do
  for k3:=1 to Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Rows.Count do
    begin
     write(DatFile,k1);
     write(DatFile,k2);
     write(DatFile,k3);
     k4:=0;
     if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='sum') then
      begin
       k4:=1;
      end
     else
      if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='set') then
       begin
       k4:=2
       end
      else
      if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='mean') then
       begin
       k4:=3;
       end;
     write(DatFile,k4);
    end;
  CloseFile(DatFile) ;
  Main.XLApp.WorkBooks[1].SaveAs(Main.ProgDir+'\forms\ '+ExtractFileName(OpenDialog1.FileName)); //*
  Main.XLApp.WorkBooks[1].close;

  IniFile:=TIniFile.Create(Main.ProgDir+'\Statistic.ini');
  length:=IniFile.ReadInteger('ListForms','length',length);
  IniFile.WriteInteger('ListForms','length',length+1);
  IniFile.WriteString('ListForms',IntToStr(length+1),ChangeFileExt(ExtractFileName(OpenDialog1.FileName),''));
  IniFile.Free;

  END;
  UpdateList();
end;

*Плагин отображающий код не правильно отображает символы \’ поэтому между этими символами я поставил пробел в действительности этот пробел не нужен

Добавление формы происходит при нажатии кнопки. После этого должен открыться экселевский файл, в котором проверяются все заполненые ячейки на наличие ячеек со стилями sum, mean и set. Позиции данных ячеек записываются в файл, для дальнейшего использования.

Рассмотрим код по подробнее:

в этой роцедуре мы будем пользоваться переменной  XLApp типа — variant.

Объявленной в классе TMain — unit Statistic_U;

...

public

...

...

...

XLApp: variant;

...

 

Так же мы объявляем Файл данных.  Тип данных будет integer

var DatFile:File of integer;

 

Что бы начать работать с OLE объектами надо для начала создать  Com объект:

Main.XLApp:= CreateOleObject('Excel.Application');

Синтаксис этой функции следующий: function CreateOleObject(const ClassName: string): IDispatch;

Тоесть в функции мы указываем имя класса ClassNam в виде string а на выходе функции мы получаем ID данного объекта.

 

После мы запрещаем показывать различные сообщения пользователю. Устанавливая свойство DisplayAlerts Com объекта в состояние false

Main.XLApp.DisplayAlerts:=false;

 

Дальше мы может открыть файл Excel который мы выбрали в самом начале нашей процедруры:

If OpenDialog1.Execute Then

Данную операцию мы проделываем используя метод  Open Рабочей книги:

Main.XLApp.WorkBooks.Open(OpenDialog1.FileName);

Данный метод имеет следующий ситнтаксис:  .Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

Параметры

FileName — имя файла который надо открыть.

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

ReadOnly — если указано, как true. То файл будет открыт только для чтения.

Format — если открывается текстовый документ, то в этом параметре можно указать символ разделитель, иначе используется символ разделитель по умолчанию.

Password — если книга защищена от просмотра, то здесь можно указать пароль в виде строки(type String), по умолчанию пользователю будет задан вопрос.

WriteResPassword — Если в файле стоит пароль на запись, а нам надо изменить данные, то здесь можно указать пароль в виде строки. По умолчанию пользователю будет задан вопрос.

IgnoreReadOnlyRecommended — Если файл был сохранён с рекомендацией, только для чтения. То если установить значение True  в этот параметр, то пользователю не покажется это сообщение.

Origin — Если открывается текстовый файл, то здесь можно указать место его создания есть три варианта : xlMacintosh, xlWindows, or xlMSDOS. По умолчанию будет использоваться текущая операционная система. Этот параметр помогает правильно определить конец строки.

Delimiter — Здесь можно указать символ разделитель для вкладок. При этом если внести строку то будет использоваться первый символ.

Editable — Данная настройка не работае для версий Microsoft Excel 5.0 и выше. Она определяла состояние видимости документа после открытия.

Notify — если необходимо открыть файл на чтение, но это не возможно то при указании этого значения в true файл добавится в список уведомлений, и когда это станет возможным пользователю отобразится уведомление. При значении false файл не сможет открыться.

Converter — с помощью данного аргумента можно использовать файлы конвертеры.

AddToMru — если значение указано как true книга добавится в список недавно открывавшихся, по умолчанию стотит false.

Local — при использовании значения true сохраняет файлы с языковыми настройками Microsoft Excel (включая параметры панели управления). При указании значения false— сохранение файлов с языковыми настройками Visual Basic.  По умалчанию используется сохранение файлов с языковыми настройками Visual Basic.

CorruptLoad — принимает три значения xlNormalLoad (0) рабочая книга открывается «Нормально» , xlRepairFile (1) рабочая книга открывается в режиме восстановления, xlExtractData  (2) рабочая книга открывается в режиме извлечения данных.

 

Дальше мы открываем файл с данными для записи в файл получаемых значений, но так как статья об OLE объектах мы не будем подробно описывать:

AssignFile (DatFile,Main.ProgDir+'\dat\'+ChangeFileExt (ExtractFileName(OpenDialog1.FileName),'.dat'));

 

Для того, что бы пробежать по всему файлу мы используем 3 вложенных цикла:

for k1:=1 to Main.XLApp.Workbooks[1].WorkSheets.Count do
  for k2:=1 to Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Columns.Count do
  for k3:=1 to Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Rows.Count do

Где Main.XLApp.Workbooks[1].WorkSheets.Count — количество закладок в книге Workbooks[1].  Цифра [1] так как мы только что создали com объект и открыли в нём всего одну книгу.

Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Columns.Count — кол-во используемых колонок на данной вкладке.

Main.XLApp.WorkBooks[1].WorkSheets[k1].UsedRange.Rows.Count — кол-во используемых строк на данной вкладке.

 

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

if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='sum') then

if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='set') then

if (Main.XLApp.WorkBooks[1].WorkSheets[k1].Cells[k3,k2].Style.Name ='mean') then

 

После просмотра всего документа на поиск нужных ячеек. Сохраняем шаблон формы в теле программы.

Main.XLApp.WorkBooks[1].SaveAs(Main.ProgDir+'\forms\'+ExtractFileName(OpenDialog1.FileName));

 

Синтаксис данного метода: .SaveAs ( Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

FileName — имя файла с которым будет сохранён документ.

Password — если мы хотим защитить файл от просмотра, то здесь можно указать пароль на просмотр в виде строки(type String). Длинна пароля не должна быть больше 15 символов.

WriteResPassword — если нужно защитить файл от записи, то здесь можно указать пароль на запись

ReadOnlyRecommended — сделать пометку с рекомендацией открывать этот файл в режиме только для чтения. Данная рекомендация отобразится пользователю при открытии файла.

CreateBackup — создасть резервную копию файла если значение указано true.

AccessMode — возможно указать следующие значения xlExclusive запись будет производится в монопольном режиме, xlNoChange не изменяет Режим доступа, xlShared возможно открытие на запись файла несколькими пользователями одновременно. По умолчанию используется режим xlNoChange  и режим доступа не меняется.

ConflictResolution — При режиме общей книги. Иногда возникают конфликты записи когда два пользователя пытаются записать различные данные в одну ячейку. Этот параметр может принимать три значения: xlLocalSessionChanges всегда соглашаться перезаписывать данные, xlOtherSessionChanges — всегда отклонять перезапись данных, xlUserResolution — спросить у пользователя, как разрешить конфликт.

AddToMru — если значение указано как true книга добавится в список недавно открывавшихся, по умолчанию стотит false.

TextCodepage — Игнорируется для всех языков в Microsoft Excel.

TextVisualLayout — Игнорируется для всех языков в Microsoft Excel.

Local — при использовании значения true сохраняет файлы с языковыми настройками Microsoft Excel (включая параметры панели управления). При указании значения false— сохранение файлов с языковыми настройками Visual Basic.  По умалчанию используется сохранение файлов с языковыми настройками Visual Basic.

 

И наконец мы заканчиваем работу с книгой. Закрывая рабочую книгу:

Main.XLApp.WorkBooks[1].close;

Данный метод имеет следующий синтаксис .Close(SaveChanges, Filename, RouteWorkbook)

SaveChanges — если данный параметр имеет значение true, то  если в документе были изменения, документ будет сохранён при выходе.

Filename — имя с которым будет сохранятся документ.

RouteWorkbook — Если книгу надо направить дальше по маршруту, то это можно сделать этим параметром. true — книга отправится дальше по маршруту, false — книга не будет отправлятся.

]]>
https://coolcode.ru/vzaimodeystvie-s-excel-s-pomoshhyu-ole-obektov-v-delphi-createoleobject-open-saveas-close/feed/ 2
Statistic. Программа для анализа собираемых отчётов. https://coolcode.ru/statistic-programma-dlya-analiza-sobiraemyih-otchyotov/ https://coolcode.ru/statistic-programma-dlya-analiza-sobiraemyih-otchyotov/#respond Sun, 11 May 2014 12:34:56 +0000 http://coolcode.ru/?p=986

Программа предназначена, для обработки статистики предоставляемой в виде файлов Excel.

Скачать программу можно здесь:

Для Windows: Statistic. Исходный код: Statistic_source

Statistic. Скриншоты программы:

mainoptions1options2options3Search

Statistic. О программе:

Программа statistic позволяет проводить суммирование, вычисление среднего значения и подсчёт кол-ва вхождения различных значений ячейки, в большом кол-ве документов Excel.

Для работы программы необходимо, что бы на компьютере была инсталлированна версия Explorer 2013 или выше.

Statistic. Инсталяция:

Скачать архив, распаковать в нужную вам директорию.

Statistic. Инструкция к программе:

1. Создание формы шаблона.

Создаем в Excel новый документ заходим в формат->стиль создаем стили с именем “sum”, “set” и “mean”.

StatisticСтильЯчеек

 Ячейки со стилем “sum” будут суммироваться между собой пример:

Таблица1
кол1 кол2 кол3
строка1 1 2
строка2 1 1
Таблица2
кол1 кол2 кол3
строка1 2 2
строка2 1 2
Результирующая
кол1 кол2 кол3
строка1 3 4
строка2 2 3

Ячейки со стилем “set” будет подсчитываться количество одинаковых ячеек пример:

Таблица1
кол1 кол2 кол3
строка1 1 2
строка2 1 1
Таблица2
кол1 кол2 кол3
строка1 2 2
строка2 1 2
Результирующая
кол1 кол2 кол3
строка1 “1“=1;“2“=1; “2“=2;
строка2 “1“=2; “2“=1;“1“=1;

Ячейки со стилем “mean” будет вычислять среднее арифметическое значений в ячейках:

Таблица1
кол1 кол2 кол3
строка1 1 2
строка2 1 1
Таблица2
кол1 кол2 кол3
строка1 1 2
строка2 1 1
Результирующая
кол1 кол2 кол3
строка1 1.5 2
строка2 1 1.5

Форму надо сохранить и закрыть. После эту форму надо добавить в программу через менюСервис->Настройки.

StatisticСервисНастройки

Перейти во вкладку «Путь к директориям».

После надо нажать кнопку «Добавить форму отчёта».

И имя отчёта появится в списке «Пути к отчётам».

Закрываем меню настроек нажав на кнопку пременить.

StatisticПараметрыДобавление шаблона

После этого шаблоном отчётом можно пользоваться.

 

2. Добавление отчётов для анализа

Что бы добавить отчёты которые надо про суммировать сначало надо выбрать шаблон по которому будет производится суммирование:

После нажимаем кнопку «Открыть папку с отчётами».  И выбрать в появившемся меню папку с отчётами над которыми надо провести Анализ.

После нажатия кнопки «Добавить отчёты из директории» в выбранной директории будет произведён поиск файлов.

Если зайти в Сервис->настройки и перейти во вкладку Поиск отчётов.

Можно увидеть что он имеет несколько настроек:

Можно указать, в каком виде программа будет искать отчеты первый пункт *«имя отчета»*.xls имя отчета должно содержать имя шаблона которое отображаеться в комбо боксе и оканчиваться на «.xls»

Второй пункт добавить в список все файлы, заканчивающиеся на «.xls» (тоесть быть Excel’евским файлом)

с галочкой он будет искать в поддиректориях без галочки просто в выбранной папке.

StatisticДобавлениеОтчётов

После добавления Отчётов в список отчётов с ними можно провести следующие дейстивия:

Добавить ещё отчётов, для этого надо повторно нажать кнопку «Открыть папку с отчётами».

Удалить выбранный отчёт из списка.

Очистить весь список отчётов.

StatisticДействиясОтчётами

4. Запуск сквозного суммирования.

После формирования списка отчётов и если в списке будет 2 отчёта или больше, станет активна кнопка сквозное суммирование.

StatisticКнопкаСквозноеСуммирование

После нажатия на неё будет формироваться финальный отчёт. И в конце появится документ Excel c отчётом.

5. Поиск значений ячейки в документах

Так же для поиска каких либо значений в отчёте, возможно воспользоваться кнопкой Поиск значений.

После нажатия кнопки «Поиск значения» надо указать Лист, Столбец, Строку и искомое значение, после нажать кнопку Поиск.

StatisticПоиск

После в списке будут появлятся отчёты в которых было найдено заданное значение.

 

 

 

]]>
https://coolcode.ru/statistic-programma-dlya-analiza-sobiraemyih-otchyotov/feed/ 0