УДК 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.