УДК 004.416.6

Автоматизация работы в MS Office средствами языка программирования F#

Лопатин Дмитрий Константинович – студент направления Информационных систем и технологий Приамурского государственного университета имени Шолом-Алейхема. (ПГУ, г.Биробиджан)

Аннотация: В статье описывается технология программирования на языке F# разработанных шаблонов MS Excel и MS Word. Представленный фрагмент кода показывает общий алгоритм работы с приложениями MS Office.

Ключевые слова: F#, обработка данных, программирование отчетов

Язык программирования F# является мультипарадигменным языком программирования. Он поддерживает такие парадигмы как функциональная (основная парадигма F#), императивная, объектно-ориентированная. F# позволяет писать как пользовательские приложения, так и библиотеки, которые возможно использовать в других приложениях, создаваемых на технологии .NET. Таким образом, F# полезен как основной инструмент программирования, так и как вспомогательный. Основной отличие F# от других языков программирования в том, что он имеет встроенную функциональную парадигму, что облегчает написание программ для решения сложных задач.

В Приамурском государственном университете им.Шолом-Алейхема функционируют несколько информационных систем [1, 2], которые на данный момент ограничены в функциональном расширении в области отчетов, предоставляемых в формате MS Office. Поэтому была поставлена задача по расширению функциональной отчетности, для решения которой был выбран язык программирования F#.

В литературе по языку программирования [3, 4, 5] приводятся примеры программного кода для совместной обработки данных средствами F# и передачи результирующей информации в приложения MS Office.

Для отчетов в MS Excel требовалось правильно заполнять формы отчетов. Приведем фрагмент кода решения из разработанного шаблона.

open Microsoft.Office.Interop.Excel

open System

open System.Runtime.InteropServices

open System.Drawing

open System.Windows.Forms

let form = new Form(Width=442, Height=360, Visible = true,

Text = "Тестовый пример для заполнения ячеек и построения диаграммы в MS Excel с помощью F#",

Menu = new MainMenu());

let tabControl1 = new TabControl(Dock=DockStyle.Fill);

let tabPage1 = new TabPage(Text = "Передача информации в MS Excel");

let checkBox1 = new CheckBox(Left=8, Top=16, Width=120, Height=17, Text="Построить диаграмму");

let button1 = new Button(Left=8, Top=42, Width=75, Height=23, Text="Выполнить");

form.Controls.Add(tabControl1);

tabControl1.Controls.Add(tabPage1);

tabPage1.Controls.Add(button1);

tabPage1.Controls.Add(checkBox1);

let export _ = let app = new ApplicationClass(Visible = true)

let workbooks = app.Workbooks

let workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet)

let sheets = workbook.Worksheets

let worksheet = (sheets.[box 1] :?> _Worksheet)

worksheet.Range("G1").Value2 <- 5

worksheet.Range("A1", "E1").Value2 <- [| for i in 0 .. 4 -> i * i |]

worksheet.Range("A2", "E2").Value2 <- [| for i in 0 .. 4 -> sin (float i) |]

let array3 = Array2D.init 4 5 (fun i j -> i*10 + j)

worksheet.Range("A3", "E6").Value2 <- array3

let range5 = worksheet.Range("A8", "J9")

let array5 =

Array2D.init 2 10

(fun i j ->

let arg = (Math.PI / 10.0) * float j

if i = 0 then Math.Sin(arg) else Math.Cos(arg))

range5.Value2 <- array5

if checkBox1.Checked = true then

range5.Select() |> ignore

let chartobjects = (worksheet.ChartObjects() :?> ChartObjects)

let chartobject = chartobjects.Add(10.0, 150.0, 450.0, 250.0)

chartobject.Chart.ChartWizard(Source = range5,

Gallery = XlChartType .xl3DColumn,

PlotBy = XlRowCol.xlRows,

HasLegend = true,

Title = "Пример графика",

CategoryTitle = "Категории",

ValueTitle = "Значения")

chartobject.Parent |> ignore

chartobject.Chart.GetType() |> ignore

let _ = button1.Click.Add(export);

do Application.Run(form)

Основываясь на представленном шаблоне программного кода, были разработаны отчеты, не предусмотренные программными системами: для информационной системы распределения нагрузки профессорско-преподавательского состава – отчет о нагрузке по кафедрам, отчет по выполненной нагрузки по преподавателям, по кафедре, по факультет; для информационной системы Абитуриент-деканат – отчет о распределении поступивших абитуриентов на направления, факультеты по населенным пунктам. В настоящий момент ведется дальнейшая проработка и подготовка отчетов по запросам учебно-методических управлений высшего образования и среднего профессионального образования университета.

Список литературы

1. Баженов Р. И., Гринкруг Л. С. Информационная система по расчету и распределению нагрузки профессорско-преподавательского состава ФГБОУ ВПО «Приамурский государственный университет им. Шолом-Алейхема» // Информатизация и связь. 2012. № 5. С. 75-78.

2. Баженов Р. И., Гринкруг Л. С. Информационная система Абитуриент-Деканат ФГБОУ ВПО «Приамурский государственный университет им. Шолом-Алейхема» // Информатизация и связь. 2013. № 2. С. 97-99.

3. Шамшев Ан. Б., Воронина В. В. Функциональное программирование на языке F#: учебное пособие. Ульяновск: УлГТУ, 2012. 165 c.

4. Petricek T., Skeet J. Functional programming for the Real World with examples for F# and C#. Manning, 2007. 495 p.

5. Smith C. Programming F#. O’Reilly, 2010. 384 p.