Проект

Общее

Профиль

Работа через COM с Excel

http://citforum.ru/programming/windows/excel_faq/
https://docs.microsoft.com/ru-ru/office/vba/api/excel.workbook.activesheet

При передачи большого числа, например, Штрихкода документа, обрезаются символы после 16 знака.

Для корректного вывода устанавливаем текстовый формат, затем выводим

        Если Лист.Range(ИмяОбласти).Select() Тогда
            если нрег(ИмяОбласти) = нрег("ШтрихКодДокумента") Тогда
                Лист.Range(ИмяОбласти).NumberFormat = "@"; // текстовый формат
            КонецЕсли;
            Лист.Range(ИмяОбласти).value = прЗначение;
        КонецЕсли;

Прочие форматы:

РабочийЛистКниги.Cells(1,1).NumberFormat = "@"; // текстовый формат
РабочийЛистКниги.Cells(1,2).NumberFormat = "0"; // числовой формат
РабочийЛистКниги.Cells(1,3).NumberFormat = ""; // Формат даты Selection.NumberFormat = "m/d/yyyy" 

Работа с книгами, листами

https://1c.ru/rus/partners/training/edu/theses/?y=2009&s=35&t=865


 Перем Excel, Лист;

Функция СлучайноеЧисло()

Excel.Calculate();

x=Лист.Cells(3,1).value;

Возврат x;

КонецФункции

Процедура СтатМоделированиеБросковМонетыНажатие(Элемент)

Excel=Новый ComОбъект(«Excel.Application»);

    Excel.Volatile(); //Сброс генератора случайных чисел

    Excel.Application.WorkBooks.Add(1);

    Лист=Excel.ActiveSheet;

    Лист.Cells(1,1).Formula=«=RAND()»;

    n=1;

    Если ВвестиЧисло(n,»Введите количество бросков») Тогда

                   Орел=0;

                   Решка=0;

                   Для i=1 По n Цикл

                                   x=СлучайноеЧисло();

                                   Если x>=0.5 Тогда

                                                   Орел=Орел+1;

                                   Иначе

                                                   Решка=Решка+1;

                                   КонецЕсли;

                   КонецЦикла;      

    КонецЕсли;

    Сообщить(Орел);

    Сообщить(Решка);

Excel.ActiveWorkBook.Close(0);

Excel.Quit();

Excel=Неопределено;

КонецПроцедуры

Основным, в объектной модели Excel, является объект Application, содержащий коллекцию WorkBooks объектов типа WorkBook. Каждый объект типа WorkBook содержит коллекцию объектов WorkSheets типа WorkSheet.

Манипуляция рабочими книгами, их листами, ячейками осуществляется путем обращения к свойствам и методам этих объектов. Для создания OLE сервера MS Excel можно использовать следующий код:

Excel = Новый COMОбъект («Excel.Application «).

Создать новую рабочую книгу Excel можно c помощью метода Add коллекции WorkBooks объекта Application:

Excel.Application.WorkBooks.Add().

Свойство ActiveWorkBook объекта Excel.Application указывает на текущую активную рабочую книгу среди одной или нескольких открытых. Помимо этого к рабочей книге можно обращаться по ее порядковому номеру. Например, ко второй открытой рабочей книге можно обратиться с помощью оператора:

Excel.WorkBooks2.

Сделать рабочую книгу активной можно с помощью метода Activate:

Excel.WorkBooks2. Activate().

Закрытие документа осуществляется с помощью метода Close:

Excel.ActiveWorkBook.Close().

Метод Close имеет несколько необязательных (в случае позднего связывания) параметров, влияющих на правила сохранения рабочей книги. Первый из параметров принимает значения истина или ложь и влияет на то, сохранять ли изменения, внесенные в рабочую книгу. Второй параметр - имя файла, в котором нужно сохранить рабочую книгу (если в нее были внесены изменения). Третий параметр также принимает значения истина или Ложь и влияет на то, будет ли пересылаться документ следующему пользователю по электронной почте. Просто сохранить рабочую книгу, не закрывая ее, можно с помощью метода Save или SaveAs.

Закрыть OLE сервер MS Excel можно с помощью метода Quit объекта Excel.Application. Данный метод параметров не имеет.

Обращение к активному листу рабочей книги производится с помощью оператора:

Лист=Excel.ActiveSheet

Обращение к отдельным ячейкам листа производится с помощью коллекции Cells объекта WorkSheet, например:

Лист.Cells(1,1).Formula=«=RAND»

Таким образом мы вводим в ячейку формулу, в данном случае функцию генерирования случайного числа в диапазоне [0;1). Здесь первая из координат ячейки указывает на номер строки, вторая - на номер столбца.

Оператор Excel.Calculate() выполняет перерасчет формул на активном листе электронной таблицы.