Проект

Общее

Профиль

Работа через COM с Excel » История » Версия 3

Всеволод Дорофеев, 23.10.2019 11:55

1 1 Всеволод Дорофеев
h1. Работа через COM с Excel
2 1 Всеволод Дорофеев
3 1 Всеволод Дорофеев
h3. При передачи большого числа, например, Штрихкода документа, обрезаются символы после 16 знака.
4 1 Всеволод Дорофеев
5 1 Всеволод Дорофеев
Для корректного вывода устанавливаем текстовый формат, затем выводим
6 1 Всеволод Дорофеев
7 1 Всеволод Дорофеев
<pre>
8 1 Всеволод Дорофеев
		Если Лист.Range(ИмяОбласти).Select() Тогда
9 1 Всеволод Дорофеев
			если нрег(ИмяОбласти) = нрег("ШтрихКодДокумента") Тогда
10 1 Всеволод Дорофеев
				Лист.Range(ИмяОбласти).NumberFormat = "@"; // текстовый формат
11 1 Всеволод Дорофеев
			КонецЕсли;
12 2 Всеволод Дорофеев
			Лист.Range(ИмяОбласти).value = прЗначение;
13 1 Всеволод Дорофеев
		КонецЕсли;
14 1 Всеволод Дорофеев
</pre>
15 1 Всеволод Дорофеев
16 1 Всеволод Дорофеев
Прочие форматы:
17 1 Всеволод Дорофеев
18 1 Всеволод Дорофеев
<pre>
19 1 Всеволод Дорофеев
РабочийЛистКниги.Cells(1,1).NumberFormat = "@"; // текстовый формат
20 1 Всеволод Дорофеев
РабочийЛистКниги.Cells(1,2).NumberFormat = "0"; // числовой формат
21 1 Всеволод Дорофеев
РабочийЛистКниги.Cells(1,3).NumberFormat = ""; // Формат даты Selection.NumberFormat = "m/d/yyyy" 
22 1 Всеволод Дорофеев
</pre> 
23 3 Всеволод Дорофеев
24 3 Всеволод Дорофеев
h3. Работа с книгами, листами
25 3 Всеволод Дорофеев
26 3 Всеволод Дорофеев
https://1c.ru/rus/partners/training/edu/theses/?y=2009&s=35&t=865
27 3 Всеволод Дорофеев
<pre>
28 3 Всеволод Дорофеев
29 3 Всеволод Дорофеев
 Перем Excel, Лист;
30 3 Всеволод Дорофеев
31 3 Всеволод Дорофеев
Функция СлучайноеЧисло()
32 3 Всеволод Дорофеев
33 3 Всеволод Дорофеев
Excel.Calculate();
34 3 Всеволод Дорофеев
35 3 Всеволод Дорофеев
x=Лист.Cells(3,1).value;
36 3 Всеволод Дорофеев
37 3 Всеволод Дорофеев
Возврат x;
38 3 Всеволод Дорофеев
39 3 Всеволод Дорофеев
КонецФункции
40 3 Всеволод Дорофеев
41 3 Всеволод Дорофеев
 
42 3 Всеволод Дорофеев
43 3 Всеволод Дорофеев
Процедура СтатМоделированиеБросковМонетыНажатие(Элемент)
44 3 Всеволод Дорофеев
45 3 Всеволод Дорофеев
Excel=Новый ComОбъект(«Excel.Application»);
46 3 Всеволод Дорофеев
47 3 Всеволод Дорофеев
    Excel.Volatile(); //Сброс генератора случайных чисел
48 3 Всеволод Дорофеев
49 3 Всеволод Дорофеев
    Excel.Application.WorkBooks.Add(1);
50 3 Всеволод Дорофеев
51 3 Всеволод Дорофеев
    Лист=Excel.ActiveSheet;
52 3 Всеволод Дорофеев
53 3 Всеволод Дорофеев
    Лист.Cells(1,1).Formula=«=RAND()»;
54 3 Всеволод Дорофеев
55 3 Всеволод Дорофеев
    n=1;
56 3 Всеволод Дорофеев
57 3 Всеволод Дорофеев
    Если ВвестиЧисло(n,»Введите количество бросков») Тогда
58 3 Всеволод Дорофеев
59 3 Всеволод Дорофеев
                   Орел=0;
60 3 Всеволод Дорофеев
61 3 Всеволод Дорофеев
                   Решка=0;
62 3 Всеволод Дорофеев
63 3 Всеволод Дорофеев
                   Для i=1 По n Цикл
64 3 Всеволод Дорофеев
65 3 Всеволод Дорофеев
                                   x=СлучайноеЧисло();
66 3 Всеволод Дорофеев
67 3 Всеволод Дорофеев
                                   Если x>=0.5 Тогда
68 3 Всеволод Дорофеев
69 3 Всеволод Дорофеев
                                                   Орел=Орел+1;
70 3 Всеволод Дорофеев
71 3 Всеволод Дорофеев
                                   Иначе
72 3 Всеволод Дорофеев
73 3 Всеволод Дорофеев
                                                   Решка=Решка+1;
74 3 Всеволод Дорофеев
75 3 Всеволод Дорофеев
                                   КонецЕсли;
76 3 Всеволод Дорофеев
77 3 Всеволод Дорофеев
                   КонецЦикла;      
78 3 Всеволод Дорофеев
79 3 Всеволод Дорофеев
    КонецЕсли;
80 3 Всеволод Дорофеев
81 3 Всеволод Дорофеев
    Сообщить(Орел);
82 3 Всеволод Дорофеев
83 3 Всеволод Дорофеев
    Сообщить(Решка);
84 3 Всеволод Дорофеев
85 3 Всеволод Дорофеев
Excel.ActiveWorkBook.Close(0);
86 3 Всеволод Дорофеев
87 3 Всеволод Дорофеев
Excel.Quit();
88 3 Всеволод Дорофеев
89 3 Всеволод Дорофеев
Excel=Неопределено;
90 3 Всеволод Дорофеев
91 3 Всеволод Дорофеев
КонецПроцедуры
92 3 Всеволод Дорофеев
</pre>
93 3 Всеволод Дорофеев
94 3 Всеволод Дорофеев
 
95 3 Всеволод Дорофеев
96 3 Всеволод Дорофеев
Основным, в объектной модели Excel, является объект Application, содержащий коллекцию WorkBooks объектов типа WorkBook. Каждый объект типа WorkBook содержит коллекцию объектов WorkSheets типа WorkSheet.
97 3 Всеволод Дорофеев
98 3 Всеволод Дорофеев
Манипуляция рабочими книгами, их листами, ячейками осуществляется путем обращения к свойствам и методам этих объектов. Для создания OLE сервера MS Excel можно использовать следующий код:
99 3 Всеволод Дорофеев
100 3 Всеволод Дорофеев
Excel = Новый COMОбъект («Excel.Application «).
101 3 Всеволод Дорофеев
102 3 Всеволод Дорофеев
Создать новую рабочую книгу Excel можно c помощью метода Add коллекции WorkBooks объекта Application:
103 3 Всеволод Дорофеев
104 3 Всеволод Дорофеев
Excel.Application.WorkBooks.Add().
105 3 Всеволод Дорофеев
106 3 Всеволод Дорофеев
Свойство ActiveWorkBook объекта Excel.Application указывает на текущую активную рабочую книгу среди одной или нескольких открытых. Помимо этого к рабочей книге можно обращаться по ее порядковому номеру. Например, ко второй открытой рабочей книге можно обратиться с помощью оператора:
107 3 Всеволод Дорофеев
108 3 Всеволод Дорофеев
Excel.WorkBooks[2].
109 3 Всеволод Дорофеев
110 3 Всеволод Дорофеев
Сделать рабочую  книгу активной можно с помощью метода Activate:
111 3 Всеволод Дорофеев
112 3 Всеволод Дорофеев
Excel.WorkBooks[2]. Activate().
113 3 Всеволод Дорофеев
114 3 Всеволод Дорофеев
Закрытие документа осуществляется с помощью метода Close:
115 3 Всеволод Дорофеев
116 3 Всеволод Дорофеев
Excel.ActiveWorkBook.Close().
117 3 Всеволод Дорофеев
118 3 Всеволод Дорофеев
Метод Close имеет несколько необязательных (в случае позднего связывания) параметров, влияющих на правила сохранения рабочей книги. Первый из параметров принимает значения истина или ложь и влияет на то, сохранять ли изменения, внесенные в рабочую книгу. Второй параметр - имя файла, в котором нужно сохранить рабочую книгу (если в нее были внесены изменения). Третий параметр также принимает значения истина или Ложь и влияет на то, будет ли пересылаться документ следующему пользователю по электронной почте. Просто сохранить рабочую книгу, не закрывая ее, можно с помощью метода Save или SaveAs.
119 3 Всеволод Дорофеев
120 3 Всеволод Дорофеев
Закрыть OLE сервер MS Excel можно с помощью метода Quit объекта Excel.Application. Данный метод параметров не имеет.
121 3 Всеволод Дорофеев
122 3 Всеволод Дорофеев
Обращение к активному листу рабочей книги производится с помощью оператора:
123 3 Всеволод Дорофеев
124 3 Всеволод Дорофеев
Лист=Excel.ActiveSheet
125 3 Всеволод Дорофеев
126 3 Всеволод Дорофеев
Обращение к отдельным ячейкам листа производится с помощью коллекции Cells объекта WorkSheet, например:
127 3 Всеволод Дорофеев
128 3 Всеволод Дорофеев
Лист.Cells(1,1).Formula=«=RAND()»
129 3 Всеволод Дорофеев
130 3 Всеволод Дорофеев
Таким образом мы вводим в ячейку формулу, в данном случае функцию генерирования случайного числа в диапазоне [0;1). Здесь первая из координат ячейки указывает на номер строки, вторая - на номер столбца.
131 3 Всеволод Дорофеев
132 3 Всеволод Дорофеев
Оператор Excel.Calculate() выполняет перерасчет формул на активном листе электронной таблицы.